2017-11-30 5 views
0

bashスクリプトからスイッチ名を渡しています。 bashスクリプトは、テキストファイルを繰り返し実行し、スイッチ名を送信します。スイッチが応答しない場合、expectスクリプトが停止することがあります。スクリプトをしばらく待ってから次のスイッチに移動するか、少なくとも出て欲しい。私はタイムアウトを使いましたが、助けを借りていませんでした。リモートスイッチがexpectスクリプトで応答しない場合、次のコマンドを続行する方法

set timeout 60 
. 
. 
. 
expect "*> " 
send "ssh -l admin $switchName.XXX.XXXXXX.net switchshow -portname > $filename1\r" 
sleep 2 
expect { 
     "*(yes/no)? " { 
       send "yes\r" 
       exp_continue 
     } 

     "*assword: " { 
       send "$password\r" 
     } 
     default { 
       exp_continue 
     } 
} 

ご迷惑をおかけして申し訳ございません。

答えて

0

あなたは「タイムアウト」のキーワードを参照することを期待したい:sshコマンドが完了するまで、あなたが期待する「ループ」に残るように、私はまたあなたの条件ビットを更新

expect { 
     timeout { 
       puts "timed out waiting for $switchName" 
     } 
     "*(yes/no)? " { 
       send "yes\r" 
       exp_continue 
     } 

     "*assword: " { 
       send "$password\r" 
       exp_continue 
     } 
     eof 
} 

を。

関連する問題