在下面的代码中(将在我的linux机器上运行),我试图将run_check_node.sh
复制到两个不同的远程linux机器上,然后仅从我的机器上执行该脚本。
问题:run_check_node.sh
脚本大约需要25分钟才能执行。但是远程linux机器上的run_check_node.sh
脚本执行在大约3-4分钟后停止,然后进行下一次for
循环迭代。在下一次迭代中也会发生同样的事情。我尝试使用set timeout 1200
来解释这25分钟,但问题仍然存在。任何人都可以帮忙做什么?
问题:我正在使用的机器IP,有时他们会要求输入密码,有时候也不会。所以,我期待它。因此,如果没有要求密码,它只会在控制台上抛出一些消息,然后继续执行脚本。请告诉我这是否是正确处理密码的方法?
#!/bin/bash
Linux1_ip=10.20.30.40
Linux2_ip=10.100.20.30
pass="Gaur"
IP=("$Linux1_ip" "$Linux2_ip")
home="/post_checks"
############################ Linux_ip CHECKS ####################################
for ne in "${IP[@]}"
do
expect -c "
spawn ssh root@$ne \"mkdir /post_checks_$ne\"
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
expect -c "
spawn scp $home/run_check_node.sh root@$ne:/post_checks_$ne/
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
expect -c "
spawn ssh root@$ne \"chmod +x /post_checks_$ne/run_check_node.sh; bash /post_checks_$ne/run_check_node.sh\"
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
fi
done
答案 0 :(得分:0)
现在,这可能无法解释为什么您正在看到您所看到的内容,但这可能是一种有用的解决方法。
您尝试在后台的远程上执行run_check_node.sh
shell脚本怎么样?然后你会断开连接并让它自己完成。
所以,基本上,你的第三个产卵线将是:
spawn ssh root@$ne \"chmod +x /post_checks_$ne/run_check_node.sh; bash /post_checks_$ne/run_check_node.sh &\"
如果你需要检查shell脚本的完成情况,我建议的内容是不可接受的......但是我没有看到你的Bash脚本对它进行任何检查,所以我认为它可能有效对你而言。
尝试一下,让我知道它是怎么回事。