FTP Bash Script

Cet article présente un script shell pour se connecter à un serveur FTP, avec un nom d’utilisateur et un mot de passe, et entrer ensuite des commandes FTP.

Maisons cubes à Rotterdam créées par l’architecte Piet Blom, avec les textes FTP File Transfer Protocol, Bash Shell Script en surimpression

Pour passer des commandes FTP, que l’on entrerait normalement après le prompt ftp>, on utilise l’opérateur EOF End of file.

Quelques commandes FTP

  • passive : Entrer dans le mode passif
  • put filename : Uploader le fichier filename sur le serveur FTP
  • mput filename [filename …] : Uploader plusieurs fichiers sur le serveur FTP
  • cd target-folder : Se diriger dans target-folder
  • ls : liste le dossier courant
  • delete filename : Supprimer le fichier filename
  • mdelete filename [filename …] : Supprimer plusieurs fichiers
  • rename old-filename new-filename : Renommer un fichier
  • bye : ferme la connection ftp.

Création du fichier bash

On crée un fichier avec l’extension .sh, auquel on donne un mode d’écriture, de lecture et d’exécution à l’utilisateur, c’est-à-dire au propriétaire du fichier bash.

On a créé un fichier vide my-script.sh. On liste les fichiers du répertoire courant, ici le répertoire home de l’utilisateur xavier c’est-à-dire le dossier /home/xavier.

Pour rendre le fichier exécutable pour l’utilsateur xavier et tout interdire à un autre utilisateur, à savoir la lecture, l’écriture et l’exécution, sauf en sudo pour l’utilisateur root, on change le mode du fichier à 0700 : 4:read, 2:write, 1:run. Le 0 au début pour indiquer que c’est un fichier.

Pour indiquer au système que c’est un fichier bash qui utilise le shell, on indique un commentaire en première ligne :

Entrée des commandes FTP

On définit des variables les noms du serveur, d’utilisateur et le mot de passe. On utilise la commande ftp avec l’opérateur EOF. On indique l’option -n pour indiquer que l’on va entrer les credentials de ‘utilisateur sur le serveur FTP, -v verbose écrit le résultat des commandes dans la console. Ainsi, les informations de login/mot-de-passe credentials ne sont plus nécessaires. La création d’un fichier .netrc est présenté à la fin de l’article.

La variable $1 est le premier argument après la commande du nom du fichier, ici ce sera donc le chemin/nom de fichier à uploader sur le serveur.

Exécution du fichier

On a rendu le fichier exécutable pour l’utilisateur, il faut indiquer un nom de fichier à uploader.

La suite de chiffres entre parenthèses correspond à l’IP et au mode d’un serveur de sauvegarde Scaleway, le nom de serveur my.server.com n’existe pas bien-sûr, c’est un nom pour illustrer l’exemple.

.netrc

.netrc est un fichier qui contient le nom de la machine, le nom d’utilisateur et le mot de passe de l’utilisateur credentials et est utilisé pour l’auto-login, une connection automatique avec les credentials contenus dans ce fichier. Il est habituellement localisé dans le répertoire de l’utilisateur /home/username.

Si ce fichier n’existe pas, on peut le créer. Comme il contient des informations de connexion, il faut lui donner le mode lecture et écriture uniquement pour l’utilisateur, à savoir 0600.

Le fichier .netrc peut contenir plusieurs credentials en indiquant à chaque fois le triplet machine, login, password.

Le fichier my-script.sh devient alors :

Et hop, on peut communiquer avec un serveur FTP, entrer des commandes en mode passif – mode obligatoire pour un serveur de sauvegarde Scaleway.

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables.