2017-02-17 85 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($布尔值);'_此方法指示以前的读取,写入或打开方法是否超时。请记住,超时本身就是一个错误。为了能够在超时错误后调用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];