如果远程节点不存在,则perl处理错误

时间:2012-02-13 10:28:53

标签: perl

我在我的perl脚本中使用Net :: Telnet模块。我给这个脚本提供了一个路由器列表来登录并检索这些节点的输出。

在这三个节点中,我提到了列表中间的一个节点,该节点不可ping或在网络上真的不存在。

例如,请考虑下面的节点列表

brtm502

biad502

bjae500

其中biad502无法ping(或不存在于网络上)。

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

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

我的要求。

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

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

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

$session->errmode("return");

2 个答案:

答案 0 :(得分:1)

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

  1. errmode更改为die以外的其他内容(默认设置)。
  2. 使用eval block查看连接是否成功(并在连接失败时发出警告并执行其他任何操作)。
  3. 使用CPAN模块(例如Try::TinyTryCatch)来捕获异常,而不是die

答案 1 :(得分:1)

在告诉Net :: Telnet建立连接后,您正在设置errmode。使用您在文档中找到的扩展调用,反转顺序或将errmode设置折叠到 - > open。