[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:
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