file_fetcher - transfer files from FTP, SFTP servers

NAME

file_fetcher - transfer files from FTP, SFTP servers

COPYRIGHT

Copyright (C) 2012-2021 TBBM <https://www.tbbm.at>

SYNOPSIS

file_fetcher.pl [options] -iniFile [file]

General Options

-h

Print a brief help message and exits.

-help

Prints the manual page and exits.

-logLevel

Sets the log level: DEBUG, DEBUG, WARN, ERROR, defaults to INFO.

-logDir

Sets the directory to store the log files, defaults to ./logs.

Configuration based

-iniFile keywords für Variante ftp_in
    [ftp_in]
    
    ftp_type = ftp|sftp    # Typ der FTP Übertragung ftp (unverschlüsselt) oder sftp (ftp über sssh)
    
    #ftp_method = Net_SSH2 # alternative Methode für ftp_type = sftp (default methode ist plink)
    
    server =               # Servename des Zielservers
    
    port =                 # Port des Serverzugangs (default 21)
    
    user =                 # Benutzername des Serverzugangs am Zielserver
    
    pass =                 # Kennwort des Serverzugangs (wird nicht benötigt, falls ftp_type = sftp und key_file gesetzt ist)
    
    key_file =             # Datei mit ssh-private key falls die Datei per private key Anmeldung und per ftp_type = sftp übertragen wird
    
    subdir =               # Unterverzeichnis am FTP-Server
    
    to =                   # Unterverzeichnis lokal
    
    regex =                # Regulärer Ausdruck zur Filterung 
    
    delete_remote = 0|1    # 0: nicht löschen, 1: löschen nach Übertragung
    
    MaxAgeSeconds =        # OPTIONAL: Maximales Alter der Datei in Sekunden
    
    MinAgeSeconds =        # OPTIONAL: Mindestalter der Datei (es zählt der Modification Zeitstempel)
                           # um ein Abschneiden der Datei zu verhindern, die gerade noch am FTP-Server geschrieben wird
    
    MinSize =              # Mindestgröße der Datei in Bytes
    
    MaxSize =              # Maximale Größe der Datei in Bytes
    
    binary = 0|1           # 1: Datei wird binär übertragen (default)
    
    passive = 0|1          # 1: ftp passive mode verwenden
    
    fw = 0|1               # 1: ein lokaler proxy Server soll verwendet werden
    
    fw_server =            # Servername des proxy Servers
    
    fw_user =              # Benutzername des proxy Servers
    
    fw_pass =              # Kennwort des proxy Servers
    
    fw_quot =              # FTP QUOT Command falls der typ des proxy Servers dies verlangt 
    
    retry = n              # Anzahl der Versuche (nur für sftp)
    
    gunzip = 0|1           # 1: .gz/.zip komprimierte Datei bei Abholung transparent entpacken
    
    host_key =             # Angabe eines fingerprint host keys bei Nutzung von ftp_type = sftp unter Windows
    
    host_key = <<EOHK      # Angabe mehrerer fingerprint host keys bei Nutzung von ftp_type = sftp unter Windows
    5a:0a:a1:a9:a1:31:e0:f6:56:57:d9:ae:a5:ba:de:11
    5a:0a:a1:a9:a1:31:e0:f6:56:57:d9:ae:a5:ba:de:15
    EOHK
-iniFile keywords für Variante web_in, detailierte Beispiele siehe unterhalb
    [web_in]
    ;                      # Optionale Angabe von Kommentaren in der Steuerdatei
    
    #fw_server =           # Optionale Angabe eines http oder https proxy Servers
    
    url = <<EOURL          # Angabe von mehreren URLS von denen Daten eingesammelt werden sollen
    http://www.example1.com/foo.txt
    http://www.example2.com/foo.txt
    EOURL
    
    url = <<URLS           # Angabe von mehreren URLS mit eindeutigem lokalen Dateinamen
                           # mittels Variable {now}
    16991991_Q_X_{now}.zrx::https://www.daten.bayern.de/webservices/export.php?abfrageX
    16991991_Q_Y_{now}.zrx::https://www.daten.bayern.de/webservices/export.php?abfrageY
    URLS
                           # Angabe von nur einer URL
    url = http://www.example1.com/foo.txt
    
    #method = curl         # Alternative technische Methode zur Abholung auf basis curl
    #insecure = 1          # erlaubt curl unsichere SSL Verbindungen zu nutzen
                           # nur in Kombination mit method = curl wirksam
    
    to =                   # Zielverzeichnis für die abgeholten Daten
    

EXAMPLES

einfache FTP Abholung von csv Dateien

    [ftp_in]
    server = ftp.example.com
    user = yyyyyy
    pass = XXXXXXXXXXXX
    subdir = .
    to = D:/Datenmanagement/spool/irr_hach
    regex = csv
    delete_remote = 1
    rename_remote = 0
    UNQ = 0
    binary = 1
    

FTP Abholung von zrxp Dateien aus mehreren FTP Ordnern

    [ftp_in]
    server = ftp.example.at
    user = yyyyyy
    pass = XXXXXXXXXXXX
    subdir =<<EOT
    /Daten/Seen
    /Daten/Pegel
    EOT
    to = D:/DatenKaprun/spool/ftp_zrxp
    regex = zrxp 
    delete_remote = 1
    binary = 1

SFTP Abholung von Dateien

    [ftp_in]
    ftp_type = sftp
    server = ftp.example.com
    user = yyyyyy
    pass = DDDDDDDDDDDDDD
    subdir = /www/htdocs/YYYYYY/spool
    to = D:/Datenmanagement/spool
    regex = 00005707
    

SFTP Abholung von Dateien von einem SFTP Server der über Load Balancer mehrere finerprint host keys ausweist

    [ftp_in]
    ftp_type = sftp
    server = sftp.serverhinterloadbalancer.com
    user = yyyyyy
    pass = DDDDDDDDDDDDDD
    subdir = /www/htdocs/YYYYYY/spool
    to = D:/Datenmanagement/spool
    regex = .txt
    delete_remote = 1
    host_key =<<EOT
    46:24:a3:b6:8b:5b:82:83:4b:90:96:1c:45:26:ad:38
    ea:a6:7c:8c:a1:3e:c4:ed:72:09:d2:63:04:39:b9:b8
    EOT
    

SFTP Abholung via Net::SSH2 unter Linux

    [ftp_in]
    ftp_type = sftp
    ftp_method = Net_SSH2
    server = ftp.example.com
    user = yyyyyy
    pass = DDDDDDDDDDDDDD
    subdir = /www/htdocs/YYYYYY/spool
    to = D:/Datenmanagement/spool
    regex = 00005707
    

Web Abholung von http Schnittstellen via ZRXP (FileName wird vor URL angegeben)

    [web_in]
    url = <<EOURL
    TIROL_299251_W.zrxp::https://apps.tirol.gv.at/hydro/datenaustausch/xchange.pl?pgnr=299251&user=YYYYYY&pass=XXXXXXXXXXX&werte=W&diskr=15&modus=zrx
    TIROL_299036_W.zrxp::https://apps.tirol.gv.at/hydro/datenaustausch/xchange.pl?pgnr=299036&user=YYYYYY&pass=XXXXXXXXXXX&werte=W&diskr=15&modus=zrx
    EOURL
    to = C:\tbbm
    ZRXP = 1
    

http Abholung WEB Seite des BAFU, direkte Datei

    [web_in]
    url = <<EOURL
    http://www.hydrodaten.admin.ch/graphs/2139/temperature_2139.csv
    http://www.hydrodaten.admin.ch/graphs/2139/discharge_2139.csv
    EOURL
    to = C:\tbbm
    

https Schnittstelle Land Vorarlberg, start und end muss in millisekunden seit epoche angegeben werden

    [web_in]
    url = <<EOURL
    BANGS_WASSERSTAND.csv::https://vowis.vorarlberg.at/DownloadTool/dlt_DownloadWasserstand.php?start={time-10800}&end={time}&id0=V334714
    BANGS_ABFLUSS.csv::https://vowis.vorarlberg.at/DownloadTool/dlt_DownloadAbfluss.php?start={time-10800}&end={time}&id0=V334714
    LUSTENAU_WASSERSTAND.csv::https://vowis.vorarlberg.at/DownloadTool/dlt_DownloadWasserstand.php?start={time-10800}&end={time}&id0=V334711
    LUSTENAU_ABFLUSS.csv::https://vowis.vorarlberg.at/DownloadTool/dlt_DownloadAbfluss.php?start={time-10800}&end={time}&id0=V334711
    EOURL
    to = F:/Datenmanagement/spool/irr_hdvvowis
    

http Abholung Alpenwetterbericht von DWD, direkte Datei

    [web_in]
    fw_server = http://proxy.tirol.gv.at:8080/
    method = curl
    url = https://data.dwd.de/data/Alpenwetterbericht.txt
    user = yyyyyy
    pass = DDDDDDDDDDDDDD
    to = C:\tbbm
    

http Abholung per curl mit curl Option --insecure

    [web_in]
    url = <<URLS
    16991991_Q_{now}.zrx::https://www.daten.bayern.de/webservices/export.php
    URLS
    to = D:/Daten/spool
    fw_server = http://proxy.server.at:8080
    method = curl
    insecure = 1

http Abholung per curl mit curl Option --header

    [web_in]
    url = https://httpbin.org/headers
    header = Authorization: foobar
    to = ...
    method = curl
 file_fetcher - transfer files from FTP, SFTP servers