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:
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 ...."
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; }
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
Partager