期望从bash脚本调用的脚本完成后不会返回控制权

时间:2019-06-01 18:20:16

标签: bash expect

我正在其中使用多线程从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”。 但是,它没有打印任何内容,我需要手动退出执行。

有人可以告诉我我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

nohup不会断开终端,您想发送

 nohup /loc/c.py $host &

&在后​​台运行作业是重大更改。

(正确地说,$host也应加引号,但是如果您确定它包含不带空格或通配符的单个标记,则这无关紧要。类似地,"${hosts[@]}"应该使用双引号,但是再次,在给定的条件下,不用引号就可以了。)