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 :

script perl pour ftp


Sujet :

Modules Perl

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut script perl pour ftp
    salut,

    J'ai fait un script perl pour acceder à un serveur ftp et y recuperer des fichiers;le script fonctionne.
    Donc j'ai voulu creer un fichier de conf qui contient les parametre de connexion et la sa ne fonctionne plus .
    voila mon script :
    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
    #!/usr/bin/perl -w
    use strict;
    use Net::FTP;
     
    #############################################################################
    # PARAMETRES
    my $monfichier="confi";
    require "C:/Documents and Settings/tom/Bureau/x/conf-$monfichier.cfg";
     
     
    my $ftp = Net::FTP->new("$HOST"); 
    $ftp->login("$USER","$PASSWD"); 
    $ftp->cwd("C:/Documents and Settings/tom/Bureau/x"); 
    $ftp->get("servi/y/fich.csv"); 
    $ftp->quit;
    et le fichier de conf contient cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $HOST="NOMDUSERVEUR";
    my $USER="user";
    my $PASSWD="passwd";
    sans faire appel au fichier de conf sa fonctionne et quand on l'appel sa bogue :
    Global symbol "$HOST" requires explicit package name at C:\Documents and Setting
    s\tom\Bureau\x\ftp.pl line 21.
    Global symbol "$USER" requires explicit package name at C:\Documents and Setting
    s\tom\Bureau\x\ftp.pl line 22.
    Global symbol "$PASSWD" requires explicit package name at C:\Documents and Setti
    ngs\tom\Bureau\x\ftp.pl line 22.
    Execution of C:\Documents and Settings\tom\Bureau\x\ftp.pl aborted du
    e to compilation errors.

    Merci

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    je me suis sur une machine unix
    donc j'ai essayer et sa ne fonctionne pas aussi
    j'ai meme essayer de recuperer un parametre que je saisi quand j execute mon script
    ./ftp.pl mon param
    et dans mon script j'essai de l'affichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $monparam=$1;
    print "$monparam";
    et ça ne fonctionne pas aussi
    est ce qu'il faut rajouter un module ??

    Use of uninitialized value in string at ./ftp.pl line 19.

    merci

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Perso, je procéderais comme ceci (l'ai déjà fait et fonctionne à merveille) :

    1) ton fichier .conf, sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HOST;NOMDUSERVEUR
    USER;user
    PASSWD;passwd
    2) dans ton script, une petite fonction qui alimente un hash depuis ce qu'elle va lire dans ton fichier .conf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub LitConf {
        my ($hash) = shift();
     
        open(CONF, "fichier.conf") or die("pb pour lire fichier.conf : $!\n");
        while(<CONF>) {
            chomp();
            $hash->{$1} = $2 if (/^(.+);(.+)$/;
        }
        close(CONF);
        return;
    }
    Et dans ton script, tu n'as plus qu'à déclarer un hash exemple %Conf et pour faire appel à la fonction LitConf( ), il suffit de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LitConf(\%Conf);
     
    foreach(keys %Conf) {
        print "param pour $_ = $Conf{$_}\n";
    }

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    c'est compliqué par rapport au shell
    et c'est possible de passer un parametre à l'appel du script
    ./ftp.pl monhost...

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bien sûr, c'est possible

    Et comme tu vas demander "comment", ben voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # lancement du script avec arguments
    ./ftp.pl NOMDUSERVEUR user passwd
     
    # et la récup des arguments dans le script ftp.pl
    my ($Nomserveur, $user, $password) = ($ARGV[0] .. $ARGV[2]);

  6. #6
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    c'est nikel pour les param
    en faite arg[0] c'est comme $1

    mais pour le fichier de configuration
    on est obliger de passer par une fonction ?

Discussions similaires

  1. Script Perl pour VNC
    Par dubis dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 17/11/2009, 09h50
  2. Migration sunopsis v4/ODI problème du script jython pour FTP
    Par gusy78 dans le forum ODI (ex-Sunopsis)
    Réponses: 1
    Dernier message: 30/07/2008, 14h21
  3. Réponses: 3
    Dernier message: 31/03/2008, 13h59
  4. SUNOPSIS/ODI problème de script Jython pour FTP
    Par bmontandon dans le forum ODI (ex-Sunopsis)
    Réponses: 2
    Dernier message: 01/10/2007, 14h02
  5. Script PERL pour l'archivage/purge/zip de fichiers
    Par jfmerveille dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2007, 12h52

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