繁体   English   中英

期望从bash脚本调用的脚本在完成时不返回控件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM