Datenabholung von FTP/FTPS/SFTP/HTTP/HTTPS

Die Datenabholung erlaubt das Herunterladen von Dateien von FTP/FTPS/SFTP/HTTP/HTTPS-Servern.

Zur Übertragung von FTP/FTPS/SFTP-Servern wird eine INI-Datei mit der Sektion ftp_in verwendet.

Zur Übertragung von HTTP/HTTPS-Servern (Webservern) wird eine INI-Datei mit der Sektion web_in verwendet. Dabei werden verschiedene Webseiten mit der INI-Sektion url angegeben.

python prozessing.pyz ftp_in_xxxx.ini
python prozessing.pyz web_in_xxxx.ini

perl file_fetcher.pl -iniFile [file]

perl file_fetcher.pl -iniFile [file] -logLevel [DEBUG|INFO|WARN|ERROR] -logDir [logs]

INI-Datei: ftp_in

[ftp_in]

ftp_type = ftp|sftp    # Typ der FTP Übertragung ftp (unverschlüsselt) oder sftp (ftp über ssh)
#ftp_method = Net_SSH2 # alternative Methode für ftp_type = sftp (Standardmethode ist plink)
server =               # Servername 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 =              # Maximalgröß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 =     # 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

INI-Datei: web_in

[web_in]
# Optionale Angabe von Kommentaren in der Steuerdatei
;

# Optionale Angabe eines http oder https proxy Servers
#fw_server =

# Angabe von mehreren URLS von denen Daten eingesammelt werden sollen
url =
    http://www.example1.com/foo.txt
    http://www.example2.com/foo.txt

# Angabe von mehreren URLS mit eindeutigem lokalen Dateinamen mittels Variable {now}
url =
    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

# Angabe von nur einer URL
url = http://www.example1.com/foo.txt

# Platzhalter, die in URLS ausgewertet werden
# - {time} UNIX Zeitstempel in s
# - {time-10800} UNIX Zeitstempel in s minus Zeitangabe in s
# - {DD}   aktueller Tag (00..31) zur Laufzeit des Programms

# Alternative technische Methode zur Abholung auf basis curl
#method = curl
#insecure = 1 # erlaubt unsichere SSL-Verbindungen zu nutzen

# Zielverzeichnis für die abgeholten Daten
to =

INI-Beispiele

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 =
    /Daten/Seen
    /Daten/Pegel
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 fingerprint 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 =
    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

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

HTTP-Abholung via ZRXP (Zieldateiname wird vor URL angegeben)

[web_in]
url =
    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
to = C:\tbbm
ZRXP = 1

HTTP-Abholung Webseite des BAFU, direkte Datei

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

https Schnittstelle Land Vorarlberg, start und end muss in Millisekunden seit 1970-01-01 angegeben werden

[web_in]
url =
    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
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 Option --insecure

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

HTTP-Abholung per curl mit Option --header

[web_in]
url = https://httpbin.org/headers
header = Authorization: foobar
to = ...
method = curl