Verbindung zu FTP über die Linux-Befehlszeile

Ich muss Dateien über FTP von der Befehlszeile hochladen. Ich habe diese Informationen: eine URL, einen Benutzernamen, ein Passwort, einen Port und die Tatsache, dass ich den passiven Modus verwenden soll.

Wie lade ich eine Datei mit diesen Informationen hoch?

Beachten Sie, dass ich dies über ein Skript tun muss, damit ich diese Informationen automatisch eingeben kann.

Author: Peter Mortensen, 2011-12-14

3 answers

Es gibt viele CLI (command line) - clients da draußen. Am häufigsten ist einfach ftp. Du hast <host>, <port>, <username>, <pass> und "passiver Modus". Mit ftp sollten Sie tun:

ftp -p <host> <port>

-p schalter bedeutet "passiven Modus verwenden". Dann werden Sie nach Ihrem Benutzernamen und Passwort gefragt. Nach erfolgreicher Anmeldung (Server informiert Sie darüber) können Sie einige Befehle geben. Geben Sie help ein und drücken Sie "enter", um die Liste der verfügbaren Befehle abzurufen. Sie können z.B. cd, ls, mkdir ftp-Befehle ändern Sie das Arbeitsverzeichnis (auf dem Server), listen Sie dessen Inhalt auf und erstellen Sie ein neues Verzeichnis. Wenn Sie sich vor dem Ausführen von ftp im selben Verzeichnis wie die Dateien befanden, die Sie senden möchten, können Sie den Befehl put oder mput verwenden, um die tatsächliche Übertragung zu starten. Der erste Befehl sendet eine Datei, der zweite mehrere Dateien mit Globbing (z. B. sendet mput *pdf alle PDF-Dateien im aktuellen Verzeichnis). Um einfache Hilfe zum Befehl zu erhalten, können Sie help <command> in der ftp - App verwenden. Ich würde sagen, das reicht für den Anfang. Für den rest verwenden man ftp oder info ftp. Um die FTP-Sitzung zu beenden, geben Sie bye ein. Es gibt andere Möglichkeiten, das zu tun, aber ich denke, dieser ist einfach elegant :).

Was die anderen Kunden betrifft, wurden hier einige interessante Möglichkeiten aufgezeigt, aber ich persönlich verwende lftp. Es ist einfach solide, gut, flexibel und einfach zu bedienen FTP-Client. Wenn Sie einen visuelleren Ansatz bevorzugen, während Sie sich noch unter der Befehlszeile befinden, können Sie sich für mc oder "Midnight Command"entscheiden. Es ist allgemeine Anwendung Datei-Manager mit Norton Commander Paradigma, kann aber auch wird für den Zugriff auf FTP-Server verwendet.

 10
Author: thebodzio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-12-15 00:37:03

Würde ich sehr empfehlen ncftp's ncftpput. Es ist sehr scriptable und ist praktisch für diese Art der Sache.

 3
Author: OneOfOne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-05-16 12:22:26

Kein Problem auf diesem. Es gibt viele Beispiele auf Gist . Gehen Sie einfach zu dieser Site und suchen Sie nach "FTP Script".

Hier ist eine, die ich gefunden habe:

#!/bin/sh

HOST='some.ftp.server'
USER='myuser'
PASSWD='mypass'
FILE='myfile'

ftp -n $HOST <<END_SCRIPT
user ${USER} ${PASSWD}
cd /path/to/something
get $FILE
quit
END_SCRIPT

exit 0

Außerdem ist Die Befehlszeile Foo eine weitere gute Seite, auf der ich dieses verrückte Beispiel für eine FTP-ish-Dateiübertragung gefunden habe:

Create a file server, listening in port 7000:

while true; do nc -l 7000 | tar -xvf -; done

Then, at client side:

tar c myfile | nc localhost 7000 ##Send file myfile to server
tar c mydir | nc localhost 7000 ## Send directory mydir to server
 2
Author: djangofan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-12-14 23:08:59