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 :

[telnet] Exécuter des instructions en cas d'echec


Sujet :

Modules Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut [telnet] Exécuter des instructions en cas d'echec
    Bonjour,

    Dans un de mes scripts PERL, j'effectue un telnet sur une machine.
    Je loggue les différentes opérations de succès et d'échec.
    J'utilise le module Net::Telnet.

    Lorsque l'utilisateur fournit un mauvais login ou mot de passe, j'aimerais pouvoir logguer les erreurs, afficher un message à l'écran et effectuer d'autres opérations (notamment fermer la connexion à mon serveur LDAP).

    Le "die" ne permet d'afficher qu'un message d'erreur.

    Voilà le code que j'utilise:
    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
    sub Telnet_Connect {
     
            my $ip_adresse = @_[0];
            my $user = @_[1];
            my $passwd = @_[2];
            my $ldap = @_[3];
            my $mesg;
     
     
            my $t = new Net::Telnet();
            if (! defined $t) {
                    LogPack::WriteLog("Impossible de créer l'objet Telnet");
                    print "Impossible de créer l'objet Telnet";
                    LDAP_modif::LDAP_disconnect($ldap);
                    exit;
            }
     
            $t->open($ip_adresse);
            if ($mesg = $t->errmsg){
                    LogPack::WriteLog("Echec de connexion Telnet sur la machine $ip_adresse");
                    print "Echec de connexion Telnet sur la machine $ip_adresse\n";
                    LDAP_modif::LDAP_disconnect($ldap);
                    exit;
            }
     
     
            $t->login($user, $passwd));
            if ($mesg = $t -> $errmsg ){
                    LogPack::WriteLog("Echec d'authentification Telnet");
                    print "Echec d'authentification Telnet\n";
                    LDAP_modif::LDAP_disconnect($ldap);
                    exit;
            }
     
     
            return $t;
    }
    Le problème c'est qu'en cas de mauvais login ou password, le script se termine et j'ai le message: "login failed: bad name or password at ...."

    Il semble que cela vienne d'un "die" qui serait exécuté à l'intérieur du "login()".
    N'y a t il pas moyen de courcircuiter ce fonctionnement pour qu'en cas d'echec, il passe dans le "if ($mesg = $t -> $errmsg )" et exécute les intructions?

    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Je viens de trouver la réponse
    Il faut indiquer le mode de gestion des erreurs lorsque l'on crée l'objet Telnet.
    Par défaut, il faut un "die". Mais si on indique "return", cela permet de gérer les erreurs.

    Voilà la portion de code modifiée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $t = new Net::Telnet(Errmode=>'return');
    Avec cette instruction, un message sera retourné en cas d'erreur (que ce soit lors du open() ou du login() ) et les instructions dans les "if" seront exécutées.


    Pour les intéressés, j'ai trouvé la solution ici:
    http://www.perlfect.com/articles/telnet.shtml

  3. #3
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 818
    Points : 499 183
    Points
    499 183
    Par défaut
    tag resolu please!

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Fait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pas d'exécution des instructions après boucle
    Par dubitoph dans le forum VBScript
    Réponses: 1
    Dernier message: 02/09/2013, 18h31
  2. ordre d'exécution des instructions !
    Par troumad dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/06/2012, 15h24
  3. Contrôler l'exécution des instructions
    Par vever dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 16/03/2011, 17h27
  4. exécuter des instruction pendant 10s
    Par eclipse2007 dans le forum MATLAB
    Réponses: 3
    Dernier message: 15/06/2009, 07h50
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 19h39

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