我正在尝试自动运行在12个Linux 7服务器的网格上运行的应用程序(重新启动后)。
这12台服务器以随机顺序重新启动。
所有服务器都必须先运行,然后才能启动位于12台服务器上的应用程序。
我想做的是测试所有12台Linux 7服务器是否都已启动,然后在所有12台服务器都已启动时,继续执行命令的启动顺序。
所有12个服务器均使用ssh密钥设置。
cat serverlist.txt 10.0.0.6 10.0.0.7 10.0.0.8 10.0.0.9 ... 10.0.0.18
我想对服务器执行ping操作,然后等到ping操作成功后再移至下一个IP地址。
我很抱歉我的问题。
如何编写此代码?
从IP列表文件的第一行读取。 ping第一个IP直到成功,然后ping其他IP地址(一次一个),直到所有12个都成功。
然后,运行命令以在12台服务器的网格上启动应用程序。
问题:如何在bash shell中进行编码。
答案 0 :(得分:1)
内部循环可以很简单
while ! ssh "${connection_string}" -o ConnectTimeout=5 true
do
sleep 0.5
done
这将执行一条简单命令,并在两次重试之间等待0.5秒。
答案 1 :(得分:0)
for i in `cat /home/Startup/serverlist.txt`
do
ssh ${i} -o ConnectTimeout=5 true
while test $? -gt 0
do
ssh ${i} -o ConnectTimeout=5 true
done
done
exit
如果ssh工作正常,则服务器仍处于活动状态,此外,使用超时是加快脚本执行速度的更好方法。如果脚本完成,则意味着所有服务器都已启动并且正在响应。