Navigation

Contactez-nous

Kitpages
155 cours Berriat
38000 Grenoble
tel : 04 76 70 93 03

Par Philippe Le Van (twitter accountplv) Dernière mise à jour : 26 juin 2012

Scripter des accès FTP avec bash

Scripter des transferts FTP en shell

On a parfois envie d'exécuter des commandes FTP en cron ou dans des scripts non interactifs. (transfert d'un backup tous les jours par FTP par exemple).

Nous notons ici quelques scripts shell (en bash) qui permettent cela.

Copier un backup tous les mois sur un FTP

Dans l'exemple suivant, on a créé un fichier backup.tgz et on le transfère sur un serveur FTP.

#!/bin/sh

# constantes
HOST=ftp.monhost.com
LOGIN=mon_login
PASSWORD=mon_password
PORT=21

# le transfert lui même
ftp -i -n $HOST $PORT << END_SCRIPT
quote USER $LOGIN
quote PASS $PASSWORD
pwd
bin
put backup.tgz
quit
END_SCRIPT

Récupérer tous les fichiers d'un répertoire FTP

Dans cet exemple, on veut récupérer tous les fichiers d'un répertoire FTP sur son poste local.

Notons juste le "prompt" dans les commandes envoyées au serveur FTP, pour que le FTP nous pose pas de question à chaque fichier transféré

#!/bin/sh

# constantes
HOST=ftp.monhost.com
LOGIN=mon_login
PASSWORD=mon_password
PORT=21

# le transfert lui même
ftp -i -n $HOST $PORT << END_SCRIPT
quote USER $LOGIN
quote PASS $PASSWORD
pwd
cd le_repertoire_ou_sont_les_fichiers
bin
prompt
mget *
quit
END_SCRIPT

Récupérer de façon récursive tout le contenu d'un serveur FTP

Pour récupérer de façon récursive tous les documents d'un serveur FTP, on peut coder quelque chose avec un client FTP, mais il y a une astuce beaucoup plus simple utilisant wget.

 

#!/bin/sh

# constantes
HOST=ftp.monhost.com
LOGIN=mon_login
PASSWORD=mon_password
PORT=21

# le transfert lui même
wget -r ftp://$LOGIN:$PASSWORD@$HOST

Conclusion

N'hésitez pas à ajouter vos propres astuces dans les commentaires.

Commentaires

Ajouter un commentaire