Ludovic ROLAND

Blog technique sur mes expériences de développeur.

Intéragir avec un serveur FTP en Perl 5 (2/6) : Connexion et déconnexion

11 août 2022

Après une bref introduction sur le protocole FTP, il est temps de s’attaquer la programmation en Perl !

Dans ce chapitre, nous allons voir ensemble le code minimal qu’il faudra écrire lorsque vous désirerez utiliser le module Net::FTP.

Plan

La connexion

Cette première partie va nous permettre de détailler les différentes parties du script minimal nécessaire à la connexion

L’en-tête du script

Puisqu’il faut bien commencer par le début, nous allons tout d’abord décrire l’en-tête de notre script de connexion au serveur FTP.

Si vous avez déjà eu l’occasion de travailler avec des modules, cette partie ne devrait pas vous poser de problème. Les autres vont devoir apprendre un nouveau mot-clef : use.

Son utilisation est toute simple. On indique en fait à notre script que l’on souhaite utiliser le module Net::FTP (dans notre cas). Ainsi, le mot use sera suivi du module que l’on souhaite utiliser.

Voici donc l’en-tête que chacun doit avoir :

#!/usr/bin/perl -w

use strict;
use Net::FTP; #Permet d'utiliser le module net::FTP

À noter que l’utilisation de strict n’est pas une obligation, mais le langage Perl étant très permissif, son utilisation permet aux débutants (et aux autres :p ) de coder de manière plus propre.

Les paramètres

Vous l’imaginez bien, se connecter à un serveur FTP nécessite un certain nombre d’informations. Voici une liste non-exhaustive des différents paramètres possibles :

  • le nom d’hôte du serveur FTP ;
  • le port ;
  • le mode debug ;
  • le mode de connexion ;
  • le délais ;

La connexion

Nous allons enfin pouvoir construire un objet Net::FTP créant une connexion au serveur FTP.

Pour se faire, nous allons utiliser le constructeur new() de l’objet Net::FTP. Cette fonction prend pour paramètres les différentes informations sous la forme d’une table de hashage.

Voyons immédiatement un exemple :

my $ftp = Net::FTP->new('ftp.debian.org', Debug => 1, Timeout => 20)
  or die "Impossible de se connecter à l'hôte : $@";

Les mots clefs or die permettent de gérer les éventuelles erreurs de connexion au serveur. Ainsi, s’il y a un problème, le or die permet d’arrêter le programme et d’afficher le message d’erreur.

Si la connexion se fait sans problème, vous n’aurez rien de spécial à l’écran.

my $ftp = Net::FTP->new($host)
  or die "Impossible de se connecter à l'hôte : $@";

$host est une variable contenant le nom du serveur FTP auquel vous souhaitez vous connecter.

La variable $ftp

Avant de vous montrer comment s’identifier auprès du serveur FTP, je voudrais dire quelques mots sur la variable $ftp.

Cette variable est une instance de l’objet Net::FTP. C’est à partir de cette instance d’objet que nous allons pouvoir au cours de ce tutoriel envoyer des commandes au serveur auquel nous sommes connectés.

À noter que j’ai nommé ma variable $ftp par habitude et convention, mais vous pouvez bien entendu lui donner le nom que vous souhaitez. ;)

C’est d’ailleurs cette instance qui va nous permettre immédiatement de nous identifier auprès du serveur !

S’identifier

Bien que cela dépende du serveur FTP auquel vous êtes connectés, il va souvent falloir que vous vous identifiez.

Pour cela, nous allons utiliser la méthode login() de l’objet Net::FTP.

Généralement cette méthode prend 2 paramètres :

  • le nom d’utilisateur ;
  • le mot de passe.

Sans plus tarder, voyons un exemple :

$ftp->login('login', 'password')
    or die "Impossible de s'identifier : ".$ftp->message;

Comme à chaque fois, leor diepermet de gérer les éventuelles exceptions renvoyées par notre programme. Ici, le message d’erreur est stocké dans $ftp->message.

A noter que si la fonction login() est appelée sans arguments, le module Net::FTP va tenter d’utiliser le module Net::Netrc afin de trouver les réglages de l’hôte. Si rien n’est trouvé, le module va alors tenter de se connecter de manière anonyme.

La déconnexion

Se déconnecter d’un serveur FTP en Perl est extrêmement simple, puisqu’une seule instruction suffit.

Nous allons utiliser la méthode quit() de notre objet.

Voici alors ce que nous obtenons :

$ftp->quit()
    or die 'Impossible de se déconnecter !';

Une fois de plus, les mots clefs or die permettent de gérer les éventuelles erreurs lors de l’appel de la fonction.

Maintenant que vous savez ouvrir et fermer une connexion, je vous propose d’aborder la manipulation des fichiers ainsi que la navigation sur le serveur.

Commentaires