[英]Expect script called from bash script not returning control when completed
我在其中使用多线程调用来自bash脚本的expect脚本for循环。 expect脚本执行ssh登录并使用nohup命令调用python脚本来重启主机。 但是,在完成重新启动后,控件不会返回到bash脚本。
Shell脚本代码:
for host in ${hosts[@]};
do
./b.exp $id $pswd $host &
done
wait
echo "Completed"
期待脚本代码:
set timeout -1
spawn ssh <server login>
send "nohup /loc/c.py $host\r"
send -- "exit\r"
expect eof
我希望在所有主机重新启动完成后,脚本应该打印“已完成”。 但是,它不打印任何东西,我需要手动退出执行。
有人可以告诉我在这里做错了什么吗?
nohup
不分离终端,你要发送
nohup /loc/c.py $host &
在后台运行工作的&
是一个重大变化。
(正确地说, $host
应该被引用,但是如果你确定它包含没有空格或通配符的单个标记,这应该没关系。同样"${hosts[@]}"
应该有双引号,但同样,在给定的条件下,这应该是没有引号的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.