0

私は自動化されたtelnetセッションを持っています..私の問題は少し混乱していますが、例で説明しようとしています....

例1:

spawn telnet 172.23.144.180 2068
after 2000
send "\r"

expect "loader>"
send "boot n7000-s2-kickstart.6.1.1.66.gbin n7000-s2-dk9.6.1.1.66.gbin\r"
### HERE I NEED TO WAIT FOR 3 MINUTES FOR MY EXPECT STRING ####
### SO IM SETTING TIME OUT ###
set timeout 180

### AFTER 3 MIN ### 
expect "Feature poap enabled/disabled"
send "yes\r"

expect "Do you want to enforce secure password standard (yes/no)"
send "yes\r"

何が起こっているのか、シナリオ 1: コンソールに何も送信せずに永遠に待機します (コンソールに " Feature poap enabled/disabled" のログが表示されます)。

何が起こっているのか、シナリオ 2: " after 180000" を与えると、つまり 3 分間眠る。" " の代わりにset timeout 180: 何があっても、スクリプトは " yes" を送信します。つまり、最初の " expect send"..

スクリプトで " " が表示された場合にのみ "yes" を送信するようにしたいのですが、Feature poap enabled/disabledこれを行うのを手伝ってくれる人はいますか?

私はさらに調査し、これがtelnetプロセスのみで発生していることを発見しました..通常のプロセスではありません(つまり、telnetではありません)

package require Expect
set timeout 180
expect "Feature poap enabled/disabled"
send "Yes\r"

正常に動作します; 180000以降も正常に動作します...

助けていただければ幸いです..

4

1 に答える 1

0

exp_internal 1 を使用し、expect の文字列が何であっても...指定された文字列を数秒間検索し、"expect: timed out" を出力して送信することがわかりました。私の場合は "yes" です。 ......だから私はset timeout -1を使用しました.それは正常に動作します..それは文字列を永遠に待ちます..

于 2012-08-29T00:54:58.120 に答える