2012-02-13 27 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