Question Comment télécharger un fichier par FTP depuis la ligne de commande?


Je dois télécharger un seul fichier sur le serveur FTP d'Ubuntu. Cette opération doit être effectuée dans un script (en mode non interactif). Quelle est la bonne syntaxe pour ftp?

J'essaie ceci, en vain:

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

98
2017-08-15 01:40


origine


Comment puis-je page de manuel? - Ignacio Vazquez-Abrams
Je ne sais pas grand chose sur le ftp outil dans Ubuntu, mais il semble qu'il s'étouffe sur le ftp://. Essayez de prendre ça peut-être? - Nate Koppenhaver
@ IgnacioVazquez-Abrams man ftp en ligne de commande - c.gutierrez
Similaire: Synchronisation de fichiers sur FTP, mais pour plusieurs fichiers. - kenorb
Je reçois l'option '-u inconnue'. - Robert Reiz


Réponses:


Voici une approche:

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

Vous pouvez également créer (ou éditer) le fichier ~ / .netrc dans le répertoire personnel de l'utilisateur qui exécutera la commande ftp, lui donner les perms appropriées (chmod 0600 ~/.netrc), et ajoutez les éléments suivants:

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

Ensuite, omettez les informations de connexion, comme dans:

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

Aussi, voici comment vous pourriez faire la même chose en utilisant curl:

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

156
2017-08-15 04:39



Wow, je ne savais pas curl FTP pris en charge! C'est super pratique. - Sébastien
+1 pour le curl Solution. Pourquoi même déranger avec l'autre? - Asaph
@Asaph, car curl n'est pas installé là où j'ai besoin de le faire, donc l'autre solution est très pratique. Merci. - bobef
+1 pour la boucle. Soigné, propre et droit au but! Dans Debian / Ubuntu, "apt-get install curl", si vous ne l’avez pas. - GTodorov
la curl la solution est la meilleure et la plus facile


Je peux recommander ftp-upload. C'est un petit outil soigné que vous pouvez installer sous Ubuntu via sudo apt-get install ftp-upload.

Exemple d'utilisation:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}

13
2018-01-27 15:52



Pouvez-vous fournir un lien vers l'outil ou sa documentation? - bwDraco
Bonjour DragonLord, si vous êtes dans Ubuntu et que vous avez installé ftp-upload (en utilisant la commande que j'ai donnée auparavant), vous pouvez simplement faire man ftp-upload. J'espère que cela pourra aider. - Floris


Vous devez corriger l'URL indiquée dans votre déclaration. Vous avez reçu l'erreur car l'URL était incomplète - il manquait le nom de l'objet que vous téléchargez. Une fois que vous avez ajouté le nom de fichier après "example.com" comme je l'ai fait ci-dessous, vous verrez que la commande unique fonctionne effectivement comme prévu.

Essaye ça:

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


5
2017-12-02 19:59



ftp: option invalide - 'u' - Babken Vardanyan
En effet :( ftp: u: option inconnue - webDEVILopers


Installez ncftp et utilisez le ncftpput outil qui l'accompagne, à peu près comme cette syntaxe:

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

Vous pouvez même vérifier si le statut de téléchargement est bon ou mauvais. Le client ftp normal peut également être utilisé avec expect.


4
2017-08-15 04:37





Vous pouvez aussi essayer lftp.

Voici un exemple:

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

Reportez-vous ici pour plus de détails

.


2
2018-01-10 09:06





Télécharger un fichier vers un emplacement distant via la ligne de commande

#!/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
2018-04-29 07:48





J'utilise les BusyBox ftpput pour faire ça:

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

Remarque: busybox ftpget fonctionne bien aussi.


1
2018-02-16 17:47





Vous pouvez également utiliser la commande sftp ou ftp

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


0
2018-02-16 19:37





J'ai amélioré la réponse de Marty comme ci-dessous (inclure des binaires):

[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
2017-07-31 02:59





FtpPut(){
    echo `echo -e "open host\nuser user pass\nbinary\nput $1\nquit"|ftp -nv`
}
FtpPut asd.txt
FtpPut asd.mp4
FtpPut asd.php
...

-1
2017-08-25 18:06