138 votes

Comment télécharger un fichier par FTP à partir de la ligne de commande ?

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

J'essaie, sans succès :

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

240voto

Marty Points 2391

Voici une approche :

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

Alternativement, créez (ou éditez) le fichier ~/.netrc dans le répertoire personnel de l'utilisateur qui exécutera la commande ftp, donnez-lui les perms appropriés ( chmod 0600 ~/.netrc ), et ajoutez ce qui suit :

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

Voici également comment vous pourriez faire la même chose en utilisant curl :

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

25voto

Floris Points 321

Je peux recommander ftp-upload . C'est un petit outil soigné que vous pouvez installer sous ubuntu par le biais de sudo apt-get install ftp-upload .

Exemple d'utilisation :

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

6voto

Paul Points 75

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

Essayez ça :

ftp -u [ftp://user:secret@ftp.example.com](https://superuser.comftp://user:secret@ftp.example.com)**/my-local-file.txt** my-local-file.txt

6voto

divinedragon Points 242

Vous pouvez également essayer lftp .

Voici un exemple :

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

Voir ici pour plus de détails et font également référence à Manuel LFTP

.

5voto

O G Points 286

Installez ncftp et utilisez le ncftpput 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 l'état du téléchargement est bon ou mauvais. Le client ftp normal peut également être utilisé avec expect.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X