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

Come caricare un file via FTP da riga di comando?

Ho bisogno di caricare un singolo file sul server FTP da Ubuntu. Questa operazione dovrebbe essere fatta in uno script (in modalità non interattiva). Qual è la sintassi giusta per ftp?

Sto provando questo, senza successo:

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

Ответы (10)

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

Ecco un approccio:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF
``` ```
# ~/.netrc
machine ftp.example.com
login user
password secret

In alternativa, creare (o modificare) il ~/. netrc nella home dir dell'utente che eseguirà il comando ftp, dargli i perms appropriati (chmod 0600 ~/.netrc), e aggiungere quanto segue:

$ echo put my-local-file.txt | ftp ftp.example.com
``` ```
$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret

Poi omettere le informazioni di login, come in:

&001 &001


Inoltre, ecco come si potrebbe fare la stessa cosa usando curl:

&001

18
18
18
2015-01-27 15:52:13 +0000

Posso consigliare ftp-upload. E’ un piccolo strumento ordinato che si può installare sotto ubuntu attraverso sudo apt-get install ftp-upload.

Esempio d'uso:

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

È necessario correggere l'URL indicato nella dichiarazione. Avete ricevuto l'errore perché l'URL era incompleto - mancava il nome dell'oggetto che state caricando. Una volta aggiunto il nome del file dopo ‘example.com’ come ho fatto qui sotto, vedrete che il singolo comando funziona davvero come volevate.

Provate questo:

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

Potete anche provare lftp.

Ecco un esempio:

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

Riferite qui per maggiori dettagli

.

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

Installare ncftp e utilizzare lo strumento ncftpput che lo accompagna, più o meno come questa sintassi:

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

Si può anche controllare se lo stato di caricamento è buono o cattivo. Il normale client ftp può anche essere usato insieme a expect.

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

Caricare un file in una posizione remota tramite riga di comando

#!/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

Per fare questo uso il ftpput di 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

Nota: anche il busybox ftpget funziona bene.

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

Si può anche utilizzare il comando sftp o ftp

sftp {user}@{IP}

Password: put {path To File On Local Computer} &007

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

Ho migliorato la risposta di Marty come segue (include il binario):

[ftp_esempio_1.sh]

$ ftp_esempio_sh.sh dump_file

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

[ftp_esempio_2.sh]

$ftp_esempio_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
...