Einleitung
Immer wieder einmal gibt es die Anforderung, einzelne Dateien von einem anderen Server - z.B. vom Webhoster - herunterzuladen.
Hinweis:
FTP ist ein unsicheres Protokoll, da alle Daten einschl. dem Passwort unverschlüsselt übertragen werden. Das heisst: Auf dem Log in deinem Router daheim oder der Firewall in der Firma sind diese im Log lesbar.
SSH ist die weit bessere Wahl und mit rsync via SSH geht der Abgleich weit eleganter.
FTP-Kommandos
Mit Windows wird ein FTP-Client mitgeliefert: die ftp.exe im Windows-Verzeichnis. Wer die FTP-Kommandos nicht kennt, bevorzugt sicherlich grafische FTP-Clients.
An dieser Stelle brauche ich aber die Kommandos, weil ich in verschiedenen Ordnern immer ein und dieselbe Datei herunterlade. Welche Kommandos der FTP-Client versteht, sehen Sie nach der Eingabe von help im FTP-Modus:
D:\>ftp Ftp> help Befehle können abgekürzt werden. Befehle sind: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir Ftp> by D:\>
Einen kurzen Hinweis, wofür die einzelnen Kommandos gut sind, sehen Sie nach der Eingabe help [Kommando].
FTP-Skript zusammenstellen
Mit diesen Kommandos muss unser FTP-Automatismus beschrieben werden können. Ich erkläre mal die Wichtigsten für den Einstieg:
- OPEN [Name des FTP-Servers]
Öffnet eine FTP-Verbindung zum genannten FTP-Server. Es folgen daraufhin die Abfrage von User und Passwort - ASCII (auch ASC) oder BIN
Übertragungsmodus auf Ascii oder Binär setzen. - CD [Verzeichnis]
Wechsel des Verzeichnisses am FTP-Server - LCD [Verzeichnis]
Wechsel des Verzeichnisses am Client (auf dem eigenen Rechner) - GET [Quell-Datei am Server] [Ziel-Datei lokal]
lädt eine einzelne (!) Datei herunter (*). Wenn Name der Zieldatei fehlt, wird der Dateiname der Quelldatei übernommen. - PUT [Quell-Datei lokal] [Ziel-Datei am Server]
lädt eine einzelne Datei hoch. Wenn Name der Zieldatei fehlt, wird der Dateiname der Quelldatei übernommen. - CLOSE; BYE
CLOSE schliesst eine FTP-Verindung; mit BYE wird zusätzlich der FTP-Modus verlassen
(*) Anmerkungen:
Um mehrere Dateien auf- oder herunterzuladen gibt es die Befehle MPUT und MGET. Allerdings kann man damit nicht rekursiv einen ganzen Verzeichnisbaum verarbeiten - dies ist mit FTP nicht möglich. An dieser Stelle helfen andere Tools weiter, wie z.B. NCFTP (Freeware für div. Plattformen - u.a. auch Windows).
So sieht mein Skript, dass in der Datei hole_logfiles.ftp gespeichert wurde, in vereinfachter Form aus. Es entspricht der Abfolge der manuell einzugebenden FTP-Kommandos, wobei jede Zeile mit [Return] abgeschlossen wird.
open [FTP-Server] [FTP-username] [Passwort] hash asc lcd F:\Webserver\htdocs\searchlog cd /searchlog get searchhistory.txt prompt lcd F:\Webserver\htdocs\logfiles cd /logfiles mget * by
Was sicherheitsrelevant ist, ist zweifelsohne die Angabe von Username und Passwort im Klartext. Für private Anwendungen daheim ist dies aber sicher kein Hindernis.
Aufruf via Batchfile
Die ftp.exe kann neben dem interaktiven Modus (an der Kommandozeile) ein Skript verarbeiten, indem der Parameter -s hergenommen wird:
@echo off echo --- starte FTP-Transfer... ftp -s:hole_logfiles.ftp echo --- fertig. pause
Unter LINUX/ UNIX kann man das FTP-Skript in das ftp einleiten:
ftp < hole_logfiles.ftp
Download
In der hier angegebenen ZIP-Datei finden Sie die HOLE_LOGFILES.BAT:
hole_logfiles.zip (1 kB)