2016-05-31 7 views
1

私は、expectコマンドを使用してIOS Ciscoルータの命令を自動化するスクリプトを作成しています。 、最後のexpect命令は実行されません

#!/bin/expect 
#log_user 0 
set timeout 60 

set mode [lindex $argv 0] 
spawn ssh [email protected] 


expect "*assword:" { 
    send "mypassword\r" 
} 

expect "*>" { 
    send "enable \r" 
} 

expect "*#" { 
    send "conf t \r" 
} 

expect "*(config)" { 
     send "interface Serial0/0/0 \r" 
     send "clock rate 14400\r" 
} 

私の問題があり、このスクリプトは、「ルータ1(設定)#」の状態で停止:

ここで私が書いたスクリプトがあります。 しかし、スクリプトの最後にinteractコマンドを置くと、すべてが正しく動作しています。ユーザーは正しくインターフェイス設定モードに入り、クロックレートは十分に更新されます。 しかし、実際には、私はユーザーが対話することを望んでいません。

だから私は本当に何が起こっているか理解していないと、なぜ私はちょうどそのようなスクリプトを終了することはできません

...

何か手がかりを持っている場合は

...?

+0

あなたのスクリプトを 'expect -d'で実行して、デバッグ出力を調べてパターンが一致しているかどうか確認してください。 –

答えて

1

私は結局自分で問題を解決することができました。

これは少し気が利いていますが...うまく動作します。誰かが行うには、適切な方法を持っている場合、

expect "*(config)" { 
     send "interface Serial0/0/0 \r" 
} 
expect "*(config-if)" { 
     send "clock rate 14400\r" 
} 
expect "*(config-if)" { 
     send "end" 
     close 
} 

とにかく:

が、それは動作しません最後expectコマンドだということを考えると、私は私のスクリプトの末尾に最後の「役に立たないが、期待し」追加しましたそれはまだ開きました

+0

それはまさに問題です。 *あなたの*はすばやく送信し、 'ssh'プロセスが終了するまで待つことはありません。 – pynexj

+0

はい、でも、スクリプトの最後に5 *のスリープ状態があっても、それでも動作しません... – Razaborg

関連する問題