2012-02-13 94 views
0

我对我的Perl脚本使用Net :: Telnet模块。我给出了这个脚本的路由器列表,以便从这些节点登录和检索输出。如果远程节点不存在,perl处理错误

在这三个节点中,我提到了一个节点位于列表的中间,这个节点不是可以ping通的,或者它确实不存在于网络中。

例如,考虑下面的节点

brtm502 

biad502 

bjae500 

的列表外面biad502的无法ping(或不在网络存在)。

当我运行这个脚本时,它会停止并抛出输出并死在那一点。

"unknown remote host: biad502 at unix-gsr-manual.pl line 70" 

我的要求。

1 /即使某些节点在网络中不可用,脚本仍应继续到下一个节点,并为预期的输出提供排除不在网络上的节点的输出。

我试过使用下面的代码,但仍然是相同的结果。

$session->open("$node") ; 

$session->errmode("return"); 

回答

1

您在告诉Net :: Telnet进行连接后设置errmode。使用您可以在文档中找到的扩展调用,反转订单或将errmode设置折叠到 - > open。

+0

+1:赶上! – 2012-02-13 10:47:19

+0

天啊!这真的是非常快速和最简单的解决方案。非常感谢 – Mahesh 2012-02-13 11:06:27

1

嗯,the documentation一眼,您可以执行下列操作之一:

  1. 更改errmodedie以外的东西(这是默认值)。
  2. 使用eval block来查看连接是否成功(并且在连接不成功时发出警告并执行任何其他操作)。
  3. 因此,请使用CPAN模块(例如Try::TinyTryCatch)来捕获异常,而不是die