Dateien automatisch per FTP herunterladen

Das war mal wieder typisch. Da hat sich ein Freund auf der Wiki von JTL umgesehen und ein Skript für den Download einer Datei vom Webserver per FTP auf den lokalen Rechner gesehen. Nur das Skript scheint irgendwie nicht das zu machen, was der Anwender erwartet. Prompt kommt der Post in der JTL-User-Community mit dem freundlichen Hinweis, ich könne sicher das Problem lösen. Wie die Menschen nur darauf kommen? 

Hier kommt die Lösung.

Für den automatischen Download per FTP gibt es mehrere Lösungsansätze. Zum einen könnten wir uns ein SKript mit WinSCP schreiben, was kein schlechter Gedanke ist. Der zweite Ansatz ist basierend auf der JTL-Wawi Wiki, (zu der wir dir auch gerne im Rahmen unserer Tätigkeiten als JTL Agentur weiterhelfen können) eine Batchdatei die ein FTP-Skript ausführt. Solange wir den Download nur auf einem Windows Client machen, reicht die Batchdatei völlig aus. Etwas anders sieht es aus, wenn wir den Download direkt auf einem Windows 2012 R2 oder Windows 2016 Server ausführen möchten. Hier kommt es trotz offener Firewall zu einem Fehler. Darum setzen wir dort das Tool WinSCP ein, das wir dann über die Aufgabenplanung starten.

Als erstes brauchen wir ein Verzeichnis auf unserem Server oder Windows PC, welches wir die notwendigen Batchdateien legen und welches als Ziel für unseren Download dienen soll. Dafür Legen wir uns irgendwo, am besten im Root einer Partition, einen Ordner an, z.B. C:Download. In diesem Ordner legen wir mit dem Editor zwei Dateien an. Eine mit dem sinnigen Namen download.bat und die andere nennen wir ftpdownload.ftp. In jedem Fall sollten wir im Vorfeld darauf achten, dass die Dateinamenserweiterungen angezeigt werden! Das ganze sieht dann in etwa so aus wie in den folgenden drei Screenshots.
Verzeichnis erstellen DownloadordnerVerzeichnis erstellen TextdokumentDateinamen ändern

Wenn wir die Dateien angelegt haben, können wir uns ans „Skripten“ machen. Zuerst legen wir die das Skript für den FTP-Download an und öffnen dazu im Editor die Datei ftpdownload.ftp.

Skript anlegen

Um unser Download-Skript anlegen zu können, brauchen wir jetzt folgende Informationen:

  1. Die Domain, auf der die Daten liegen, z.B. meinedomain.de
  2. Den FTP-Benutzernamen, z.B. webmaster
  3. Das geheime Passwort des FTP-Benutzers, z.B. P@ssw0rd
  4. Den Pfad zur Datei auf dem Webspace, z.B. httpdocs/download
  5. Den Dateinamen der Datei die wir herunterladen wollen, z.B. test.txt

Aus diesen Informationen bauen wir uns jetzt folgendes Skript zusammen:

open meinedomain.de
webmaster
P@ssw0rd
bin
lcd C:download
cd /httpdocs/download
get test.txt
bye

In den Script müsst ihr jetzt nur noch meine Beispieldaten durch eure ersetzen.

Skript Daten ersetzen

Jetzt bearbeiten wir die download.bat, mit der wir die ftpdownload.ftp aufrufen und den eigentlichen Download anstoßen. Hier tragen wir folgenden schönen 4-Zeiler ein:

@echo off
echo --- starte FTP-Transfer….
ftp -s:ftpdownload.ftp
echo ---fertig.

Zum Testen empfiehlt es sich am Ende noch den Befehl Pause anzufügen, wie ihr aus dem Screenshot entnehmen könnt. Wollt ihr die Datei dann später über die Windows Aufgabenplanung automatisiert ausführen lassen, so solltet ihr danach diese Zeile wieder entfernen.

Delta Whiskey, das war es auch schon. Jetzt können wir mit einem mutigen Doppelklick unsere download.bat das erste Mal starten.

Download.bat starten

Teste ich das Skript auf einem Windows Server bekomme ich nach ein zwei Minuten die Fehlermeldung „425 Unable to build data connection: Connection timed out“. What to hell is this. Auch die Öffnung der Ports an der Firewall haben meinen Testserver nicht dazu verleiten lassen, die Test-Datei von meinem Webserver per FTP herunterzuholen. Shit happens!

Bleiben nur noch zwei Alternativen. Eine PowerShell-Skript oder der Einsatz von WinSCP. Ich habe mich für letzteres entschieden, da auch Dummys mit diesem Tool klarkommen sollten. WinSCP könnt ihr hier herunterladen: https://winscp.net/eng/download.php#download2

Die Installation von WinSCP ist selbsterklärend und ich glaube diese muss ich hier nicht weiter erläutern nach dem Start müsst wir uns mit unserem FTP-Server verbinden.

mit FTP Server verbinden

Anschließend klicken wir auf den Menü-Eintrag Sitzung und dort auf Erzeuge Sitzungs-URL/Code….

Menü-Eintrag Sitzung

Im Reiter URL aktivieren wir die Optionen Benutzername, Passwort und wechseln anschließend in den Reiter Script.

Benutzername, Passwort

Hier klicken wir auf den Button „In die Zwischenablage kopieren“ und öffnen anschließend den Windows Editor.

Windows Editor

Den Text aus der Zwischenablage für wir in die neue Textdatei ein und löschen die Zeilen „# Ihr Befehl 1“ und „# Ihr Befehl 2“ heraus. Dafür die Zeile get /[Pfad zur Datei]/[Dateiname] [lokales Zielverzeichnis][lokaler Dateiname] ein. Das Ganze sollte dann so aussehen get /httpdocs/test.txt C:Downloadtest.txt

Skript

Die Datei speichern wir als ftpdownload.txt im Verzeichnis Download ab und rufen Sie über die Eingabeaufforderung auf. Dazu wechseln wir dort in das Installationsverzeichnis von WinSCP C:Program Files (x86)WinSCP und geben diesen Befehl ein winscp /script=“C:Downloadftpdownload.txt“

Installationsverzeichnis

Das ganze kann man jetzt in eine einfache Aufgabe in Computerverwaltung Aufgabenplanung einbauen und dann wird die Datei einmal täglich vom Server heruntergeladen. Hier muss ich nur darauf achten, das ich unter Programm/Skript die WinSCP.exe auswähle und bei Argumente hinzufügen /script=“C:Downloadftpdownload.txt“ hinterlege. Fertig ist der automatische FTP-Download.

FTP Download fertig

  • 4.7/5
  • 22 ratings
22 ratingsX
Very bad! Bad Hmmm Oke Good!
4.5% 0% 4.5% 4.5% 86.4%

Haben Sie Fragen oder brauchen ein individuelles Angebot? Zögern Sie nicht, uns zu kontaktieren.


    eBakery benötigt die Kontaktinformationen, die Sie uns zur Verfügung stellen, um Sie bezüglich unserer Produkte und Dienstleistungen zu kontaktieren. Sie können sich jederzeit von diesen Benachrichtigungen abmelden. Informationen zum Abbestellen sowie unsere Datenschutzpraktiken und unsere Verpflichtung zum Schutz Ihrer Privatsphäre finden Sie in unseren Datenschutzbestimmungen.*.

    Related Posts
    Showing 12 comments
    • Harald Diedrichs

      Interessanter Artikel, der mir helfen wird.
      Kann man auch ein ganzes Verzeichnis downloaden?

    • Sniggers

      starte FTP-Transfer
      https://10.10.103.21: Unbekannter Host.
      ftp> mein Username
      Ungültiger Befehl
      ftp> mein Passwort
      Ungültiger Befehl

      das kommt im cmd.exe Fenster, natürlich mit meinen richtigen Anmelde Daten wenn ich die .bat datei starte.

      was habe ich vlt. falsch gemacht?

      • Sniggers

        https:// entfernt jetzt geht es.

    • Deura

      Der Artikel ist sehr interessant und hat mich schon etwas weiter gebracht, danke dafür.

      Wie sieht es damit aus, dass der gesamte Inhalt eines FTP-Ordners per Batch-Script abgeholt wird?

      Also nicht nur
      get test.txt
      sondern eventuell
      get *.*

      Gibt es hierzu einen passenden Befehl?

      Danke im Voraus.

      • eBakery

        Du kannst über get /*.* alle inhalte von FTp abholen. / ist für Root bedacht

      • Hani

        Versuche mal für alle Dateien „mget“ statt „get“

        mget *.txt

    • sing

      Guten Tag
      Funktioniert das auch mit einem SFTP Server?
      Danke!

      • Christian

        Ja

    • Michel

      Hallo, ich würde auch gerne alle dateien in einem FTP Verezichnis herunterladen wollen und habe es mit dem get und auch mit dem mget befehler versucht, jedoch läd er nur ein einziges Bilder herunter und dieses ist dann auch noch fehlerhaft.
      Habt Ihr vielleicht noch einen Tipp ?

      • Andy

        Mit get * kannst du alle herunterladen

    • Roman

      Guten Tag, wie kann ich mich direkt in ein Verzeichnis Einloggen, wenn ich für home directory keine Rechte besitze sondern nur für einen Ordner.
      Wenn ich z.b open IP/Ordner im cmd eingeben
      kommt unbekannter Host obwohl ich weiß das dieser Ordner auf dem FTP existiert

    • Goran Martinovic

      Liebes Ebakery Team

      Danke euch vielmals für diese Anleitung. Ich habe unzählige Stunden verloren mein Batch Datei so umzuschreiben, dass diese durch die Firewall gelassen wird, aber einfach ohne Erfolg.

      Durch eure Anleitung habe ich das Problem in einer Stunde gelöst und dafür bin ich euch einfach nur DANKBAR!

      Ihr seid Super!

    Leave a Comment

    Hat dir der Artikel gefallen?

    Dann melde dich doch zu unserem Newsletter an!

    Neben unseren Blog Themen informieren wir dich darin regelmäßig zu neuen Features und Tutorials