Skip to content

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-Servern wird eine INI-Datei mit der Sektion ftp_in verwendet.

Zur Übertragung von SFTP-Servern wird eine INI-Datei mit der Sektion sftp_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.

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

INI-Datei: ftp_in

ini
[ftp_in]
ftp_type =
server =
user =
pass =
subdir =
to =
regex =
delete_remote =

Folgende Keys werden für die INI-Sektion [ftp_in] unterstützt. Pflichteinträge sind mit * markiert.

KeyBeispielBeschreibung
ftp_typeftp oder sftp oder sftp_rcloneTyp der Übertragung (default ftp)
ftp_encodingutf-8 oder ansiEncoding für die FTP-Verbindung (default utf-8)
server *ftp.example.comServername des Zielservers
port21Port des Serverzugangs (default 21 bei FTP bzw. 22 bei SFTP)
userbenutzernameBenutzername des Serverzugangs am Zielserver
passgeheimKennwort des Serverzugangs (wird nicht benötigt, falls ftp_type = sftp und key_file gesetzt ist)
list_methodauto oder mlsd oder list oder nlstListing-Methode für FTP (default auto: MLSD mit Fallback auf LIST)
subdir/Daten/SeenUnterverzeichnis am FTP-Server
to *D:/Datenmanagement/spool/datenUnterverzeichnis lokal
regex.csvRegulärer Ausdruck zur Filterung
glob*.csvUnix-Shell-ähnliche Platzhalter zur Filterung
delete_remoteFalse oder TrueFalse: nicht löschen, True: löschen nach Übertragung
MaxAgeSeconds86400OPTIONAL: Maximales Alter der Datei in Sekunden
MinAgeSeconds60OPTIONAL: Mindestalter der Datei (es zählt der Modification-Zeitstempel), um ein Abschneiden der gerade noch am FTP-Server geschriebenen Datei zu verhindern
min_size64Mindestgröße der Datei in Bytes
max_size1024Maximalgröße der Datei in Bytes
passiveFalse oder TrueTrue: FTP passive mode verwenden (default True)
fw_serverproxy.example.comServername des Proxy-Servers
fw_userproxyuserBenutzername des Proxy-Servers
fw_passgeheimKennwort des Proxy-Servers
UNQFalse oder True1: die Quelldatei wird eindeutig gemacht (für den Fall, dass der Lieferant immer den selben Dateinamen schickt)
prefixcorrected_Präfix für lokale Dateinamen

INI-Datei: sftp_in

ini
[sftp_in]
ftp_type = sftp
server =
user =
key_file =
subdir =
to =
regex =
delete_remote =

Die Sektion [sftp_in] unterstützt dieselben Keys wie [ftp_in] (mit ftp_type = sftp). Zusätzlich werden folgende nur für SFTP relevante Keys unterstützt:

KeyBeispielBeschreibung
key_fileid_ed25519Datei mit ssh-private key für die private-key-Anmeldung (statt Kennwort per pass)
key_typessh-rsa oder ssh-ecdsa oder ssh-ed25519Optionale Angabe des SSH-Key-Typs
host_keyknown_hosts.example.comAngabe eines Host-Keys known_hosts (ohne Angabe erfolgt keine Prüfung)
no_update_dir_modtimeFalse oder TrueTrue: --no-update-dir-modtime an rclone übergeben (nur ftp_type = sftp_rclone)

INI-Datei: web_in

ini
[web_in]
url =
url_prefix =
method =
to =

Folgende Keys werden für die INI-Sektion [web_in] unterstützt. Pflichteinträge sind mit * markiert.

KeyBeispielBeschreibung
url *http://www.example1.com/foo.txtEine oder mehrere URLs, von denen Daten abgeholt werden. Mit der Syntax dateiname::url kann ein eindeutiger lokaler Dateiname vergeben werden (Platzhalter siehe unten)
url_prefixhttp://www.example1.comPräfix, das vor jede url angehängt wird
to *C:\tbbmZielverzeichnis für die abgeholten Daten
fw_serverhttp://proxy.example.com:8080/Optionaler http- oder https-Proxy-Server
methodcurlAlternative technische Methode zur Abholung auf Basis curl
insecureFalse oder TrueTrue: erlaubt unsichere SSL-Verbindungen zu nutzen (nur bei method = curl)
userbenutzernameBenutzername für die HTTP-Authentifizierung (nur bei method = curl)
passgeheimKennwort für die HTTP-Authentifizierung (nur bei method = curl)
headerAuthorization: foobarZusätzlicher HTTP-Header (nur bei method = curl)
oauth_token_urlhttps://api.example.com/oauth/tokenURL für die OAuth2-Token-Abfrage (nur bei method = curl)
oauth_token_datagrant_type=passwordPOST-Daten für die OAuth2-Token-Abfrage (je Zeile ein Feld)
ZRXPFalse oder TrueTrue: die abgeholten Daten liegen im ZRXP-Format vor

Kommentare können in der Steuerdatei mit # oder ; am Zeilenanfang angegeben werden.

Folgende Platzhalter werden für subdir, to, url unterstützt:

PlatzhalterBeschreibung
{date}Datum als YYYY-MM-DD
{now}Datum als YYYYMMDDhhmmss
{DD}Datum als DD
{yyyy}Datum als YYYY
{yyyy/mm±offset}Datum als YYYY/MM mit Offset in Tagen
{yyyy-mm±offset}Datum als YYYY-MM mit Offset in Tagen
{iso8601±offset}Datum als YYYY-MM-DDThh:mm:ss mit Offset in Sekunden
{zrxptime±offset}Datum als YYYYMMDDhhmmss mit Offset in Sekunden
{time±offset}Datum als UNIX-Zeitstempel mit Offset in Sekunden

INI-Beispiele

einfache FTP-Abholung von csv Dateien

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

FTP-Abholung von zrxp Dateien aus mehreren FTP Ordnern

ini
[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

FTP-Abholung von zrxp Dateien aus mehreren FTP Ordnern mit einer Verbindung. Die Sektion [ftp] bzw. [sftp] öffnet die Verbindung für alle nachfolgenden Sektionen; sie muss daher vor diesen stehen. Eine Sektion mit eigenem server verwendet weiterhin eine eigene Verbindung.

ini
[ftp]
server = ftp.example.at
user = yyyyyy
pass = XXXXXXXXXXXX

[ftp_in.Seen]
subdir = /Daten/Seen
to = D:/Daten/spool/Seen
regex = zrxp
delete_remote = 1

[ftp_in.Pegel]
subdir = /Daten/Pegel
to = D:/Daten/spool/Pegel
regex = zrxp
delete_remote = 1

FTP-Abholung via proxy und user-syntax: user@ziel.server.com

ini
[ftp_in]
server = proxy.example.com
user = user_abc@www.winter.at
pass = YYYYYYYYYYYYYYY
subdir = .
to = D:/IMPORT/spool/daten
regex = .csv
delete_remote = 1
fw =
list_method = list

SFTP-Abholung von Dateien

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

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

ini
[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

ini
[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

ini
[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

ini
[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

ini
[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

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

HTTP-Abholung per curl mit OAuth2 password grant: HTTP POST https://api.example.com/oauth/token liefert {"access_token":"xyz"}. Dieses wird dann als Authorization: Bearer xyz in HTTP GET https://example.com/protected verwendet.

ini
[web_in]
url = https://example.com/protected
to = ...
method = curl
oauth_token_url = https://api.example.com/oauth/token
oauth_token_data =
	grant_type=password
	client_id=...
	client_secret=...
	username=...
	password=...

disabled_algorithms

ini
[ftp_in]
ftp_type = sftp
# ...

[disabled_algorithms]
pubkeys =
  rsa-sha2-256
  rsa-sha2-512

# oder
[disabled_algorithms]
ciphers =
  aes128-ctr
  aes192-ctr
  aes256-ctr
  aes128-cbc
  aes192-cbc
  aes256-cbc
  3des-cbc

macs =
  hmac-sha2-256
  hmac-sha2-512
  hmac-sha2-256-etm@openssh.com
  hmac-sha2-512-etm@openssh.com
  hmac-sha1
  hmac-md5
  hmac-sha1-96
  hmac-md5-96

keys =
  ssh-ed25519
  ecdsa-sha2-nistp256
  ecdsa-sha2-nistp384
  ecdsa-sha2-nistp521
  rsa-sha2-512
  rsa-sha2-256
  ssh-rsa
  ssh-dss

pubkeys =
  ssh-ed25519
  ecdsa-sha2-nistp256
  ecdsa-sha2-nistp384
  ecdsa-sha2-nistp521
  rsa-sha2-512
  rsa-sha2-256
  ssh-rsa

kex =
  ecdh-sha2-nistp256
  ecdh-sha2-nistp384
  ecdh-sha2-nistp521
  diffie-hellman-group16-sha512
  diffie-hellman-group-exchange-sha256
  diffie-hellman-group14-sha256
  diffie-hellman-group-exchange-sha1
  diffie-hellman-group14-sha1
  diffie-hellman-group1-sha1

Beispiel für die SFTP-Abholung mit rclone sync

ini
[sftp_in]
ftp_type = sftp_rclone
...