如何在Perl中检查Net::Telnet会话是否仍然有效?

如何在Perl中检查Net::Telnet会话是否仍然有效?,perl,telnet,Perl,Telnet,我有一个Perl脚本,可以通过Net::Telnet在远程设备上运行一些命令。有时,远程端会因为登录超时或其他原因而断开telnet会话。我想知道如何在发送下一个命令之前检查telnet会话是否仍然有效?非常感谢 my $tc = new Net::Telnet{Host=>$host,Port=>23}; sub checkTelnetLive { ??? } my @commands=($cmd1,$cmd2,...); foreach $cmd(@commands) {

我有一个Perl脚本,可以通过Net::Telnet在远程设备上运行一些命令。有时,远程端会因为登录超时或其他原因而断开telnet会话。我想知道如何在发送下一个命令之前检查telnet会话是否仍然有效?非常感谢

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."
    }

}
或者您可以使用
eval

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

#. plus other code
};
warn $@ if $@;
超时-超时指示器
$boolean=$obj->超时
$prev=$obj->超时($boolean)此方法指示以前的读取、写入或打开方法是否超时。记住,超时本身就是一个错误。为了能够在超时错误后调用timed_out(),您必须将默认错误模式更改为“die”以外的模式。请参阅errmode()。如果前一个方法超时,则此方法不带参数返回1。它通过一个参数设置指示器。通常,只有内部方法设置此指示器。
eval {
      my $tc = new Net::Telnet (Host=> $host, Port=>23, Errmode => 'return' );

#. plus other code
};
warn $@ if $@;