2017-02-17 1 views
0

J'ai un script Perl pour exécuter certaines commandes sur l'équipement distant par Net :: Telnet. Parfois, la session telnet est déconnectée par le côté distant car le délai d'attente de connexion ou autre cause. Je veux savoir comment je peux vérifier la session Telnet est encore en direct avant d'envoyer la commande suivante? Merci beaucoup!Comment vérifier Net :: Session Telnet est encore en direct en Perl?

my $tc = new Net::Telnet{Host=>$host,Port=>23}; 
sub checkTelnetLive { ??? } 
my @commands=($cmd1,$cmd2,...); 
foreach $cmd(@commands) { 
    if checkTelnetLive { 
     $tc->put($cmd); 
     $tc->waitfor('/COMPLD/'); 
    } 
    else { 
     die "Remote equipment has disconnected session." 
    } 

} 
+0

** timed_out - indicateur de temporisation ** 'booléen $ = $ obj-> timed_out,' '$ prev = $ obj-> timed_out ($ boolean); '_Cette méthode indique si une méthode antérieure de lecture, d'écriture ou d'ouverture de session a expiré. Rappelez-vous que la temporisation est elle-même une erreur. Pour pouvoir appeler timed_out() après une erreur de temporisation, vous devez changer le mode d'erreur par défaut en autre chose que "die". Voir errmode(). En l'absence d'argument, cette méthode renvoie 1 si la méthode précédente a expiré. Avec un argument, il définit l'indicateur. Normalement, seules les méthodes internes définissent cet indicateur. – AbhiNickz

Répondre

0
my $tc = new Net::Telnet (Host=> $host, Port=>23, Errmode => 'return'); 

ou vous pouvez utiliser eval

eval { 
     my $tc = new Net::Telnet (Host=> $host, Port=>23, Errmode => 'return'); 

#. plus other code 
}; 
warn [email protected] if [email protected];