【发布时间】:2020-05-26 21:31:48
【问题描述】:
我正在用 bash 编写一些期望命令。
脚本:
#!/bin/bash
set timeout -1
expect -c "
spawn telnet $IP $PORT1
sleep 1
send \"\r\"
send \"\r\"
expect Prompt1>
interact timeout 20 {
sleep 1
}
expect {
Prompt2> {send \"dir\r\" }
}
"
我对脚本的意图是,首先让它telnet到一台机器上,当它看到Prompt1时,让它把控制权交给我,我会执行一个命令来加载一个特定的图像。然后等到 Prompt2 出现(表示图像已加载)。然后让它执行进一步的命令集。
运行脚本后,我可以进入交互模式,加载我的图像。问题是退出远程机器上的交互模式并将控制权交还给它。
我得到的错误:
expect: spawn id exp4 not open
while executing
"expect -nobrace Prompt2 {send "dir\r" }"
invoked from within
"expect {
Prompt2 {send "dir\r" }
}"
我该怎么做?
【问题讨论】:
-
您打算如何退出交互模式?这是期待
prompt2吗? -
超时值 20,我想我会出局的。我在这里错了吗?一旦我出去,我希望 Expect 收回控制权并期待 Prompt2。然后它可以执行另一组命令。
标签: expect