我正在编写一个使用expect的脚本,其中我必须rlogin到某个主机,之后我需要发送一些命令.现在我想退出到该主机并再次重新登录到其他主机并发送一些命令.但是我的脚本运行不是等待第一个主机完成其作业而是退出,而是在前一个进程之间发送其他命令.我怎样才能达到这个目的,请指导?
示例代码如下:
#!/usr/local/bin/expect -f
spawn rlogin host1
expect "%"
send "source xyz.csh\r"
send "exit\r"
expect "%"
spawn rlogin host2
some set of commands
Run Code Online (Sandbox Code Playgroud)
你忘记了"击中输入".发送退出后,等待进程结束操作系统的方式expect eof:
send "source xyz.csh\r"
expect "%"
send "exit\r"
expect eof
Run Code Online (Sandbox Code Playgroud)
我在遇到竞争条件问题后发现了这篇文章:有时脚本按预期完成,有时却没有。向catch脚本中添加一条语句可确保每次都达到预期的结果:
[...]
expect eof
catch wait result
Run Code Online (Sandbox Code Playgroud)
您能否详细说明“在上一个进程之间仍然发送其余命令的脚本”。
我尝试了这个并且成功了。
spawn ssh host1
expect ":"
send pwd1
expect "%"
send "echo hi\r"
expect "%"
send "exit\r"
expect eof
spawn ssh host2
expect ":"
send pwd2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13317 次 |
| 最近记录: |