我在bash中写了一些expect命令。我如何知道我已经完成了交互模式?
脚本:
#!/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\" }
}
"
我对剧本的意图是,先让它远程登录到一台机器,当它看到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'? – 2011-04-09 02:41:13
我认为20的超时值会让我失望。我错了吗?一旦我离开,我希望期待控制回来,期待Prompt2。然后它可以执行另一组命令。 – Pkp 2011-04-09 04:32:32