我正在其中使用多线程从bash脚本中的循环调用期望脚本。 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
我希望所有主机重新启动完成后,脚本应显示“ Completed”。 但是,它没有打印任何内容,我需要手动退出执行。
有人可以告诉我我在做什么错吗?
答案 0 :(得分:0)
nohup
不会断开终端,您想发送
nohup /loc/c.py $host &
&
在后台运行作业是重大更改。
(正确地说,$host
也应加引号,但是如果您确定它包含不带空格或通配符的单个标记,则这无关紧要。类似地,"${hosts[@]}"
应该使用双引号,但是再次,在给定的条件下,不用引号就可以了。)