期待陷入无限循环

时间:2014-06-12 17:23:37

标签: loops expect

我似乎只能期望命令在期望语句中工作,例如expect {}。所以下面的代码将会执行,但循环会继续看到默认提示符,即"#"。

#!/usr/bin/expect -f
set filename [lindex $argv 0]
set timeout -1
spawn ssh user@IP
set pass "pass"
expect {
        password: {send "$pass\r" ; exp_continue}
    "# " {send "show card table all\r" ; exp_continue}
 }

上面的代码一直在反复运行命令。我似乎无法隔离expect / send命令。

我不能简单地输入:

expect "# "
send "command"

没有任何东西会在expect {}

之外执行

非常感谢。

1 个答案:

答案 0 :(得分:1)

你应该send "show card table all\r"多少次?您编写它的方式,每次看到#时,您都会发送该命令。

假设您只需要查看一次,请从该操作中删除exp_continue

expect {
    password: {send "$pass\r" ; exp_continue}
    "# " {send "show card table all\r"}
}
expect "# " 
send "exit\r"
expect eof

这将在密码提示出现时多次发送密码。然后,如果看到“提示”,则发送“show card”命令并且expect命令结束。然后我期待一个提示,发送“退出”(如果这是正确的命令)并等到产生的进程结束。