2011-12-22 61 views
0

下面是代码网::远程登录捕获错误

use Net::Telnet; 
my $session = new Net::Telnet (Timeout => 15,Prompt => '/#$/'); 
foreach $node (@nodes) { 
    $session->open("$node") or die ("\n\n\n NOT ACCESSIBLE "); 
    $session->login('admin', 'admin'); 
    $session->cmd('term len 0'); 

    my @output1=$session->cmd("sh isis neighbor"); 
    print @output1; 
} 

Puspose这个脚本的一部分:登录节点列表和打印输出

但是我看到的节点之一是没有从到达服务器,并且此脚本停止以下输出的打印输出。

“EOF读等待登录提示:在telnet-test-rtc1.pl 11行”

我的要求是,即使节点之一是不可达的脚本应该继续排除该节点。

可能吗?请让我知道如果有更多的清晰度要求

问候

回答

0

在用于Net::Telnet的文档,这可以发现:

错误如定时出根据所述误差模式 动作处理。默认操作是将错误消息打印到标准的 错误并使程序死机。有关更多 信息,请参阅errmode()方法。

通过适当地设置errormode,您可以防止脚本死亡。

不过,Telnet虽然年代久远,但技术明智。改用SSH代替它可能是个好主意。

+0

谢谢..我的问题解决了$ session-> errmode(“return”); ......问候 – Mahesh 2011-12-22 09:53:28

+0

@Mahesh很高兴它帮助! – TLP 2011-12-22 09:56:43

0

检查perldoc

错误,如超时;根据错误模式的动作处理。默认的操作是将错误消息打印到标准错误并让程序死机。有关更多信息,请参阅errmode()方法。

在该页面上搜索“errmode”,您将获得所需内容。