【问题标题】:perl handling error if remote node is not exist如果远程节点不存在,perl 处理错误
【发布时间】:2012-02-13 10:28:52
【问题描述】:

我在我的 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");

【问题讨论】:

    标签: perl


    【解决方案1】:

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

    【讨论】:

    • 天哪!这真的是非常快速和简单的解决方案。非常感谢
    【解决方案2】:

    好吧,看看the documentation,您可以执行以下操作之一:

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

    【讨论】:

      猜你喜欢
      • 2018-04-03
      • 1970-01-01
      • 2016-08-30
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2018-08-08
      相关资源
      最近更新 更多