IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

Module net::ftp, répéter une commande


Sujet :

Modules Perl

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut Module net::ftp, répéter une commande
    Bonjour à tous,

    C'est la première fois que j'utilise le module net::ftp de perl. J'ai une liste de fichiers à copier sur un serveur ftp (free). Voici mon code, les fichiers à copier sont lus à partir d'un fichier $infile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #!/usr/bin/perl
     
    use strict;
    use Net::FTP; 
     
    ...
     
    my $ftp = Net::FTP->new("ftpperso.free.fr", Debug => 0, Timeout => 100000)  or die "Impossible de se connecter à : $@";
    $ftp->login("monsite",'*********') or die "Impossible de se logger ", $ftp->message; 
    $ftp->binary() || die "Unable to set mode to binary. ", $ftp->message;
    $ftp->cwd("photos\/$bdd")or die "Impossible de changer de répertoire ", $ftp->message;
     
    open(FILE, $infile) or die("ouverture du fichier $infile impossible");
    while (my $ligne = <FILE>) 
    	{
    		chomp($ligne);
    		my $no_photo = $nb_photo+$cpt+1;
    		#on ftp les fichiers correspondants
    		my $image_gde = "img\ \($no_photo\)\.jpg";
    		my $image_mini = "mini_$image_gde";
    		$ftp->put("$path_site\/photos\/$bdd\/$image_gde") or die "put $image_gde a echoue \n", $ftp->message;			
    		$ftp->cwd("mini")or die "Impossible de trouver le répertoire mini \n", $ftp->message;	
    		$ftp->put("$path_site\/photos\/$bdd\/mini\/$image_mini") or die "put $image_mini a echoue\n", $ftp->message;
    		$ftp->cwd("..")or die "Impossible de changer de répertoire\n ", $ftp->message;
    		$cpt++;
    	}
    	close(FILE);
    	$ftp->quit;
    	print "Traitement en ligne accompli pour $cpt photos...\n\n";
    ...
    Or au bout d'un certain temps les die() associés au put ou au cwd() sont activés. N'y aurait-il pas un moyen de répéter ces commandes jusqu'à leur exécution? Ou une autre solution?

    Merci d'avance

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Peux tu nous montrer le message d'erreur

    Entre temps, teste ce programme corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Net::FTP;
     
    my $ftp = Net::FTP->new( "ftpperso.free.fr", Debug => 0, Timeout => 100000 )
      or die "Impossible de se connecter à : $@";
    $ftp->login( "monsite", '*********' ) or die "Impossible de se logger ", $ftp->message;
    $ftp->binary() || die "Unable to set mode to binary. ", $ftp->message;
    $ftp->cwd("photos/$bdd") or die "Impossible de changer de répertoire ", $ftp->message;
     
    open( FILE, '<', $infile ) or die("ouverture du fichier $infile impossible");
    while ( my $ligne = <FILE> ) {
      chomp($ligne);
      my $no_photo = $nb_photo + $cpt + 1;
     
      #on ftp les fichiers correspondants
      my $image_gde  = "$path_site/photos/$bdd/img ($no_photo).jpg";
      my $image_mini = "$path_site/photos/$bdd/mini/mini_$image_gde";
      if ( -e $image_gde ) {
        $ftp->put($image_gde) or die "put $image_gde a echoue \n", $ftp->message;
      }
      else {
        warn "Fichier inexistant : $image_gde\n";
      }
     
      $ftp->cwd('mini') or die "Impossible de trouver le répertoire mini \n", $ftp->message;
     
      if ( -e $image_mini ) {
        $ftp->put($image_mini) or die "put $image_mini a echoue\n", $ftp->message;
      }
      else {
        warn "Fichier inexistant : $image_mini\n";
      }
     
      $ftp->cwd('..') or die "Impossible de changer de répertoire\n ", $ftp->message;
      $cpt++;
    }
    close(FILE);
    $ftp->quit;
    print "Traitement en ligne accompli pour $cpt photos...\n\n";

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 102
    Par défaut
    Merci pour ta réponse. J'ai corrigé mon code par le tien. Les plantages continuent. Voici deux exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    vincent@PC-vincent:~/Images/Photos Choisies/lison$ updatemysite.pl -b lison -i list -num 376 --online
    Vérification des photos contenues dans le fichier list : 
    #######################################################################################################################################################
     ==> Ok !!!!
     
     
    on commence à mettre à jour à partir de la photo 376+1
    Fichier list utilisé 
    traitement img (377).jpg
    traitement img (378).jpg
    ...
    traitement img (402).jpg
    put /opt/lampp/htdocs/le_site_des_momos/photos/lison/img (402).jpg a echoue 
    vincent@PC-vincent:~/Images/Photos Choisies/lison$ updatemysite.pl -b lison -i list -num 376 --online
    Vérification des photos contenues dans le fichier list : 
    #######################################################################################################################################################
     ==> Ok !!!!
     
     
    on commence à mettre à jour à partir de la photo 376+1
    Fichier list utilisé 
    traitement img (377).jpg
    ...
    traitement img (494).jpg
    Impossible de trouver le répertoire mini
    Comme tu peux voir les déconnections se font à des moments différents et pour des raisons différentes. Une idée? Est-ce du à ma connexion orange (pourtant plus que correcte)?

Discussions similaires

  1. module Net::SSH2 curiosité exécution commande ssh ?
    Par tintin3158 dans le forum Modules
    Réponses: 13
    Dernier message: 22/08/2014, 15h07
  2. Répéter une commande sur un ensemble de fichiers
    Par sohoney dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/01/2013, 10h55
  3. Réponses: 1
    Dernier message: 22/08/2006, 03h38
  4. telnet et ftp sans modules Net::Telnet et Net::Ftp
    Par jmarclacroix dans le forum Modules
    Réponses: 2
    Dernier message: 05/05/2006, 20h14
  5. est ce normal que le module NET::FTP soit TRES lent ?
    Par ramislebob dans le forum Modules
    Réponses: 4
    Dernier message: 14/03/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo