首页 > 解决方案 > 一个 bash shell 程序等待列表中的所有服务器启动,然后运行启动脚本

问题描述

我正在尝试自动启动(重新启动后)在 12 个 Linux 7 服务器的网格上运行的应用程序。

12 台服务器以随机顺序重新启动。

在启动驻留在 12 台服务器上的应用程序之前,所有服务器都需要运行。

我想做的是测试所有 12 台 Linux 7 服务器是否都已启动,然后当所有 12 台服务器都启动时,我将继续执行命令的启动序列。

所有 12 台服务器都设置了 ssh 密钥。

猫服务器列表.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 中编写代码。

标签: linuxshell

解决方案


内循环可以很简单

while ! ssh "${connection_string}" -o ConnectTimeout=5 true
do
    sleep 0.5
done

这会运行一个简单的命令,并在重试之间等待 0.5 秒。


推荐阅读