So laden Sie Dateien von einer FTP-Site in einer Befehlszeile ohne Benutzerinteraktion herunter (Windows)

13

Ich weiß, dass es einen FTP-Befehl gibt, der unter Windows über die Befehlszeile ausgeführt werden kann und eine Datei von einer FTP-Site herunterlädt. Benutzer + Passwort werden in "dieser" einzeiligen cmd angegeben. Diese Optionen + Password Passtrough sollten sich in dieser Befehlszeile befinden.

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo [email protected]>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt
Soundhax
quelle
Müssen Sie über FTP herunterladen oder müssen Sie diese Datei nur mit einem beliebigen Programm herunterladen? (Rsync kann aus einer Datei mit zu synchronisierenden Namen und aus der Befehlszeile lesen. Scp kann dies auch über die Befehlszeile tun. Beide sind nicht so alt wie Klartext, no_true_security FTP).
Hennes

Antworten:

13

Versuchen Sie Folgendes : Batch-Dateien - Unbeaufsichtigte FTP-Downloads

WGET ftp://ftp.mydomain.com/path/file.ext  

für anonyme Downloads

oder:

WGET ftp://user:[email protected]/path/file.ext  

wenn eine Authentifizierung erforderlich ist.


Wie @XavierStuvw durch Änderungen und Kommentare hervorhob, würde das Wechseln WGETin Kleinbuchstaben unter wgetLinux funktionieren.

wget ftp://user:[email protected]/path/file.ext
CalvT
quelle
Ich sehe dort keinen Befehl, der eine Benutzer- und Passwortwechseloption in EINER Zeile hat.
Soundhax
-s Schalter war im Satz, wie ich mich erinnere
Soundhax
2
Willkommen bei Super User! Während dies theoretisch die Frage beantworten kann, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Kanadier Luke
1
@CalvT Keine Einwände. Der geplante Vorteil des Kommentars besteht darin, dass Linux-Benutzer nach einer Internetsuche auf dieser Seite landen und das System überwachen können, für das sie gelten. Es ist mir tatsächlich passiert.
XavierStuvw
1
@CalvT Der Titel ist in der Tat präzise, ​​aber Suchmaschinen visualisieren oft den gesamten Antwortrahmen und es ist einfach, sich darauf einzulassen. Natürlich sollte dies den Leser nicht davon abhalten, aufmerksam zu sein, aber in diesem Fall war es ein Zufall, dass Linux- und Windows-Anweisungen im Grunde gleich sind. Gut gemacht, danke.
XavierStuvw
8

Ich habe den Weg gefunden:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp
Soundhax
quelle
Dies hat nicht funktioniert, als ich es ausprobiert habe (ich habe stattdessen den Befehlszeilenclient von WinSCP verwendet ). Auf welcher Windows-Version wurde es getestet?
Peter Mortensen
Können Sie erklären, wie diese Zeile funktioniert? Ich kann keine Dokumentation finden. Ich versuche es mit psftp zum Laufen zu bringen
StallingOne
@stallingOne Stellen Sie sich das &als Zeilenumbruch vor ... es sind tatsächlich mehrere Befehle. Grundsätzlich erstellt er ein Skript, Zeile für Zeile, mit echound weist es dann ftpan, es auszuführen. Er benennt auch die Skriptdatei ftp, was sie verwirrend macht.
Havenard
Schlechte Wahl des Dateinamens. "ftp" ist sowohl der Dateiname des Skripts, das er erstellt, als auch der Name der Exe. Die ftp -n -v -s:ftpPfadauflösung bei ist also etwas hinky. (Jede Verwendung von "ftp" bezieht sich auf verschiedene Dinge)
Chad Schouggins
2

Beachten Sie, dass Sie die Syntax eines Befehls unter DOS mithilfe von /? Anfordern können. Schalter. Zum Beispiel:

C: \> ftp /?

Überträgt Dateien von und zu einem Computer, auf dem ein FTP-Serverdienst ausgeführt wird
(manchmal auch als Daemon bezeichnet). FTP kann interaktiv verwendet werden.

FTP [-v] [-d] [-i] [-n] [-g] [-s: Dateiname] [-a] [-A] [-x: Sendepuffer] [-r: recvbuf
fer] [-b: asyncbuffers] [-w: windowsize] [host]

  -v Unterdrückt die Anzeige von Remote-Server-Antworten.
  -n Unterdrückt die automatische Anmeldung bei der ersten Verbindung.
  -i Deaktiviert die interaktive Eingabeaufforderung bei mehreren Dateien
                  Transfers.
  -d Aktiviert das Debuggen.
  -g Deaktiviert das Globbing von Dateinamen (siehe Befehl GLOB).
  -s: Dateiname Gibt eine Textdatei an, die FTP-Befehle enthält. das
                  Befehle werden automatisch ausgeführt, nachdem FTP gestartet wurde.
  -a Verwenden Sie beim Binden der Datenverbindung eine beliebige lokale Schnittstelle.
  -Ein Login als anonym.
  -x: send sockbuf Überschreibt die Standardgröße SO_SNDBUF von 8192.
  -r: recv sockbuf Überschreibt die Standardgröße SO_RCVBUF von 8192.
  -b: Async-Anzahl Überschreibt die Standard-Async-Anzahl von 3
  -w: windowsize Überschreibt die Standardgröße des Übertragungspuffers von 65535.
  Host Gibt den Hostnamen oder die IP-Adresse der Fernbedienung an
                  Host, zu dem eine Verbindung hergestellt werden soll.

Anmerkungen:
  - Die Befehle mget und mput benötigen y / n / q für yes / no / quit.
  - Verwenden Sie Control-C, um Befehle abzubrechen.

In Ihrem Fall sollten Sie den Schalter -s verwenden, um ein Skript einschließlich der Anmeldeantworten einzugeben.

Zum Beispiel:

  1. Erstellen Sie eine Skriptdatei (c: \ scriptfile.txt) mit folgendem Inhalt:

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. Führen Sie ftp mit dem Schalter -s aus und geben Sie den Skriptdateinamen an

    C:\>ftp -s:c:\scriptfile.txt
    
yosh m
quelle
Unter Windows XP (ja, ja, ich weiß) führt dies zu "Unbekannter Host /?".
Peter Mortensen