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”..

我希望我的脚本仅在我看到“”时才发送“是” 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:timed out”并发送。在我的情况下是“yes” ......所以我使用 set timeout -1 它工作正常..它将永远等待字符串..这有点我需要..谢谢大家投入.. -</p>

于 2012-08-29T00:54:58.120 回答