2017-02-17 19 views
0

У меня есть сценарий Perl для запуска некоторых команд на удаленном оборудовании Net :: Telnet. Иногда сеанс telnet будет отключен удаленной стороной, так как время ожидания входа в систему или другая причина. Я хочу знать, как я могу проверить, что сеанс telnet все еще жив, прежде чем отправить следующую команду? Большое спасибо!Как проверить Net :: Telnet-сессия по-прежнему живет в 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 - тайм-аут индикатор ** '$ булево = $ obj-> timed_out;' '$ пред = $ obj-> timed_out ($ boolean); 'Этот метод указывает, был ли вычислен предыдущий метод чтения, записи или открытия. Помните, что тайм-аут сам по себе является ошибкой. Чтобы иметь возможность вызывать timed_out() после ошибки тайм-аута, вам придется изменить режим ошибок по умолчанию на что-то другое, кроме «die». См. Errmode(). Без аргумента этот метод возвращает 1, если предыдущий метод тайм-аут. С аргументом он устанавливает индикатор. Обычно для этого индикатора устанавливаются только внутренние методы. – AbhiNickz

ответ

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

или вы можете использовать eval

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

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