我似乎只能期望命令在期望语句中工作,例如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 {}
之外执行非常感谢。
答案 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命令结束。然后我期待一个提示,发送“退出”(如果这是正确的命令)并等到产生的进程结束。