2011-10-17 6 views
6

を自動化するスクリプトを期待しますデバイス。は、私はにログインし、自動的に期待するコマンドには複数の可能性がない場合、スクリプトは正常に動作しますtelnetの</p> <p>を通じて自分のデバイスにログインするために期待するスクリプトを作成しようとしているのtelnetログイン

#!/usr/bin/expect 
set timeout 20 
set ip [lindex $argv 0] 
set port [lindex $argv 1] 
set user [lindex $argv 2] 
set password [lindex $argv 3] 

spawn telnet $ip $port 
expect "'^]'." sleep .1; 
send "\r"; 
sleep .1; 
expect "login:" 
send "$user\r" 
expect "Password:" 
send "$password\r"; 
interact 

上記のスクリプトは正常に動作し、正しいパラメータを渡すと正常にログインします。しかし、いったんexpectコマンドにブランチを追加すると(エラー処理のために)、スクリプトはlogin:プロンプトで立ち往生します。しばらくしてから印刷されます。Script Error 下の誤ったスクリプト。

#!/usr/bin/expect 
set timeout 20 
set ip [lindex $argv 0] 
set port [lindex $argv 1] 
set user [lindex $argv 2] 
set password [lindex $argv 3] 

spawn telnet $ip $port 
expect "'^]'." 
sleep .1; 
send "\r"; 
expect 
{ 
    "login:" 
    { 
     send "$user\r" 
     expect "Password:" 
     send "$password\r"; 
     interact 

    } 

    "host: Connection refused" 
    { 
    send_user "ERROR:EXITING!" 
    exit 
    } 

} 

PS:このスクリプトは、さらに、デバイス上で異なるビルドイメージをロードするために、追加のプロンプトを待つために開発されています。 Telnet(コンソール)接続のみが機能します。 sshはオプションではありません。

+0

ログインした後に追加のコマンドを渡したことをどのように達成したかを気にする気がしますか?私はその障害を乗り越えることができません:http://stackoverflow.com/questions/11148832/shell-script-successful-telnet-login-how-to-issue-commands-after-that – TryTryAgain

+1

あなたが話している場合スクリプトを使用してシェル内で追加のコマンドを自動的に実行します。 sendコマンドを使用することになっています。対話はボールをユーザに渡す。私が投稿した質問から、あなたはすでに答えがあることがわかります。 :)勝つために期待.. – woodstok

答えて

4

悪いです。 問題は中括弧で問題になりました。それらはexpectコマンドと同じ行にあるはずです。

関連する問題