2012-02-13 18 views
0

私はperlスクリプトでNet :: Telnetモジュールを使用しています。このスクリプトにルータのリストを渡して、これらのノードからログインして出力を取得します。リモートノードが存在しない場合のperl処理エラー

これらの3つのノードのうち、私はリストの途中でping可能でないか、実際にはネットワーク上に存在しないノードを挙げました。例えば

biad502からノード

brtm502 

biad502 

bjae500 

のリストの下に検討は、(ネットワーク上に存在するか否か)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:良いキャッチ! –

+0

ああ私の神!実際にこれは本当に非常に迅速かつ簡単な解決策でした。どうもありがとう – Mahesh

1

まあ、the documentationを一瞥は、次のいずれかの操作を行うことができます

  1. 変更(デフォルト)die以外にerrmode
  2. eval blockを使用して、接続が成功したかどうかを確認します(接続が成功しなかった場合は警告を表示し、必要な操作を行います)。
  3. Try::TinyまたはTryCatchなどのCPANモジュールを使用して、例外をキャッチし、結果としてdieではありません。