如何检查 Net::Telnet 会话是不是仍在 Perl 中?
Posted
技术标签:
【中文标题】如何检查 Net::Telnet 会话是不是仍在 Perl 中?【英文标题】:How to check Net::Telnet session is still live in Perl?如何检查 Net::Telnet 会话是否仍在 Perl 中? 【发布时间】:2017-07-06 12:01:04 【问题描述】:我有一个 Perl 脚本,可以通过 Net::Telnet 在远程设备上运行一些命令。有时,由于登录超时或其他原因,远程登录会话会被远程断开。我想知道如何在发送下一个命令之前检查 telnet 会话是否仍然有效?非常感谢!
my $tc = new Net::TelnetHost=>$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."
【问题讨论】:
timed_out - 超时指示器$boolean = $obj->timed_out;
$prev = $obj->timed_out($boolean);
此方法指示先前的读取、写入或打开方法是否超时。请记住,超时本身就是一个错误。为了能够在超时错误后调用 timed_out(),您必须将默认错误模式更改为“死”以外的其他模式。请参阅 errmode()。如果前一个方法超时,则此方法不带参数返回 1。通过参数它设置指标。通常,只有内部方法设置此指标。
【参考方案1】:
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 $@ if $@;
【讨论】:
以上是关于如何检查 Net::Telnet 会话是不是仍在 Perl 中?的主要内容,如果未能解决你的问题,请参考以下文章