2011-08-15 01:40:11 +0000 2011-08-15 01:40:11 +0000
117
117

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

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

Ich versuche dies, vergeblich:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'

Antworten (10)

188
188
188
2011-08-15 04:39:47 +0000

Hier ist ein Ansatz:

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

Alternativ können Sie das ~/ erstellen (oder bearbeiten). netrc-Datei im Home-Verzeichnis des Benutzers, der den ftp-Befehl ausführt, geben Sie ihm die entsprechenden Dauerwörter (chmod 0600 ~/.netrc) und fügen Sie Folgendes hinzu:

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

Lassen Sie dann die Anmeldedaten weg, wie in:

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

Außerdem könnten Sie dasselbe mit curl tun:

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret
18
18
18
2015-01-27 15:52:13 +0000

Ich kann ftp-upload empfehlen. Es ist ein nettes kleines Tool, das Sie unter ubuntu bis sudo apt-get install ftp-upload installieren können.

Anwendungsbeispiel:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
5
5
5
2011-12-02 19:59:23 +0000

Sie müssen die in Ihrer Erklärung 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, werden Sie sehen, dass der Einzelbefehl tatsächlich so funktioniert, wie Sie es beabsichtigt haben.

Versuchen Sie dies:

ftp -u ftp://user:secret@ftp.example.com/my-local-file.txt my-local-file.txt

4
4
4
2013-01-10 09:06:56 +0000

Sie können auch lftp

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 Einzelheiten

.

4
4
4
2011-08-15 04:37:46 +0000

Installieren Sie ncftp und benutzen Sie das mitgelieferte Werkzeug ncftpput, ungefähr so etwas wie diese Syntax: &00002 ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name if [$? -ne 0]; then echo "Upload failed"; fi

Sie können sogar prüfen, ob der Upload-Status gut oder schlecht ist. Der normale ftp-Client kann auch zusammen mit expect verwendet werden.

2
2
2
2015-04-29 07:48:35 +0000

Hochladen einer Datei an einen entfernten Standort über die Befehlszeile

#!/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
1
1
1
2015-02-16 17:47:05 +0000

Ich verwende dafür 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

Anmerkung: busybox ftpget funktionieren auch gut.

0
0
0
2015-02-16 19:37:53 +0000

Sie können auch den sftp- oder ftp-Befehl

sftp {user}@{IP}

Password: put {path To File On Local Computer} verwenden

0
0
0
2017-07-31 02:59:52 +0000

Ich habe die Antwort von Marty wie folgt verbessert (binär einfügen):

[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
-1
-1
-1
2017-08-25 18:06:21 +0000
FtpPut(){
    echo `echo -e "open host\nuser user pass\nbinary\nput $1\nquit"|ftp -nv`
}
FtpPut asd.txt
FtpPut asd.mp4
FtpPut asd.php
...