it-swarm.com.de

Wie lade ich eine Datei per FTP von der Kommandozeile hoch?

Ich muss eine einzelne Datei von Ubuntu auf den FTP-Server hochladen. Diese Operation sollte in einem Skript ausgeführt werden (im nicht interaktiven Modus). Was ist die richtige Syntax für ftp?

Ich versuche das, ohne Erfolg:

$ ftp -u ftp://user:[email protected] my-local-file.txt
ftp: Invalid URL `ftp://'
107
yegor256

Hier ist ein Ansatz:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF

Alternativ können Sie die Datei ~/.netrc im Ausgangsverzeichnis des Benutzers erstellen (oder bearbeiten), der den Befehl ftp ausführt, ihm die entsprechenden Berechtigungen (chmod 0600 ~/.netrc) erteilen und Folgendes hinzufügen:

# ~/.netrc
machine ftp.example.com
login user
password secret

Dann lassen Sie die Anmeldeinformationen weg, wie in:

$ echo put my-local-file.txt | ftp ftp.example.com

Hier ist auch, wie Sie dasselbe mit Locken machen können:

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret
171
Marty

Ich kann ftp-upload empfehlen. Es ist ein hübsches kleines Tool, das Sie unter Ubuntu über Sudo apt-get install ftp-upload installieren können.

Anwendungsbeispiel:

ftp-upload -h {Host} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
14
Floris

Sie müssen die in Ihrer Anweisung angegebene URL korrigieren. Sie haben den Fehler erhalten, weil die URL unvollständig war - es fehlte der Name des Objekts, das Sie hochladen. Wenn Sie den Dateinamen nach 'example.com' hinzufügen, wie ich es weiter unten getan habe, wird der einzelne Befehl tatsächlich so funktionieren, wie Sie es beabsichtigt haben.

Versuche dies:

ftp -u ftp://user:[email protected]/my-local-file.txt my-local-file.txt

5
Paul

Installieren Sie ncftp und verwenden Sie das mitgelieferte Tool ncftpput .

ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi

Sie können sogar überprüfen, ob der Upload-Status gut oder schlecht ist. Mit expect kann auch der normale FTP-Client verwendet werden.

4
O G

Sie können auch lftp ausprobieren.

Hier ist ein Beispiel:

lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com

Hier finden Sie weitere Details

.

2
divinedragon

Laden Sie eine Datei über die Befehlszeile an einen Remotestandort hoch

#!/bin/bash
#$1 is the file name
#usage:this_script <filename>
Host='yourhost'
USER="youruser"
PASSWD="pass"
FILE="abc.php"
REMOTEPATH='/html'

ftp -n $Host <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $REMOTEPATH
put $FILE 
quit
END_SCRIPT
exit 0
2
Shal

Ich benutze dazu die ftpput von BusyBox:

# /bin/busybox ftpput

BusyBox v1.20.2 (Debian 1:1.20.0-7) multi-call binary.

Usage: ftpput [OPTIONS] Host [REMOTE_FILE] LOCAL_FILE

Upload a file to a FTP server

    -v,--verbose            Verbose
    -u,--username USER      Username
    -p,--password PASS      Password
    -P,--port NUM           Port

Hinweis: busybox ftpget funktioniert auch gut.

1
Naskel

ich habe Martys Antwort wie folgt verbessert (einschließlich Binärdatei):

[ftp_example_1.sh]

$ ftp_example_sh.sh dump_file

ftp -n <<EOF
open 192.168.0.10
user anonymous aaa
binary
put $1
EOF

[ftp_example_2.sh]

$ ftp_example_2.sh 192.168.0.10 dump_file

ftp -n <<EOF
open $1
user anonymous aaa
binary
put $2
EOF
0
sailfish009

Sie können auch den Befehl sftp oder ftp verwenden

sftp {user}@{IP}
Password:
put {path To File On Local Computer}

0
iProgram