【问题标题】:Make bash wait until remote server kickstart is done (it will create a file when it's done)让 bash 等到远程服务器启动完成(完成后它会创建一个文件)
【发布时间】:2019-09-28 00:21:48
【问题描述】:

我正在创建一个脚本来启动多个服务器。我快完成了,但是我希望 bash 脚本等到服务器启动完成。

kickstart 完成并重新启动服务器后,将在远程 kickstarted 服务器上创建一个文件,该文件位于“/root/”下,名为“kickstart-DONE"

是否可以让 bash 脚本等到它看到这个文件,然后发布类似“完成!”之类的内容...?

我尝试搜索论坛和互联网,但可能搜索不正确,因为我无法找到与此问题相关的内容。哎呀,我什至不知道这是否可能。

简而言之;我运行我的脚本来启动服务器。 kickstart 完成后,它将在远程(-kickstarted)服务器上创建一个文件,名为:kickstart-DONE。这将指示脚本启动完全完成并且可以使用服务器。如何让脚本意识到这一点?

我希望有人理解我的意思并努力实现....

提前致谢。

//编辑

已解决!感谢科尔蒂尔尼!

Cole Tierney 给出了一些很好的答案,尽管它可以工作,但它不会等到服务器启动。我运行脚本来启动服务器,最后它运行了提供的命令:

ssh root@$HWNODEIP "while ! test -e /root/kickstart-DONE; do sleep 3; done; echo KICKSTART IS DONE...\!"

但是,kickstart 可能需要一些时间(取决于服务器速度等;从 15 分钟到 1 小时不等)。命令超时:

ssh:连接到主机 100.125.150.175 端口 22:连接超时

有没有办法让脚本完全不超时并保持活动状态,直到服务器恢复或需要超过 1 小时左右?

也许还有一种方法可以显示脚本仍然处于活动状态?就像“等待...... 5 分钟过去了。” “等等……十分钟过去了。”等等

所以它给了当前用户一些它没有死的信息?

【问题讨论】:

  • 为了排除连接问题,你能ssh到服务器吗?如果是这样,我建议使用在 ~/.ssh/config 中设置 ssh 主机条目。然后,您可以调整您的 ssh 选项,而无需使用超长的 ssh 命令。我将在我的答案中添加一个示例

标签: bash


【解决方案1】:

您可以在文件存在之前调用sleep

while ! test -e /root/kickstart-DONE; do sleep 3; done; echo kickstart done

或者休眠直到服务器接受 ssh 连接。在本地运行以下 netcat 命令以检查服务器上的 22 端口何时打开(如果您不想要额外的反馈,请删除 echo closed;):

while ! nc -zw2 $HWNODEIP 22; do echo closed; sleep 3; done

附带说明,在~/.ssh/config 中设置主机条目很有用。您可以在此处添加各种 ssh 选项,而不会使您的 ssh 命令变得笨拙。所有主机条目共有的选项可以添加到主机条目之外。有关其他选项,请参阅man ssh_config。这是一个示例(server1 可以是任何东西,将 替换为服务器的 ip 地址):

Host server1
    Hostname <server ip>
    User root

然后使用它:

ssh server1 'some command'

请注意,出于安全原因,许多系统不允许从 root 进行 ssh 连接。您可能需要考虑为 kickstart 内容添加另一个用户。如果需要 root 访问权限,请将此用户添加到 sudoers。

【讨论】:

  • 我现在看到了错误。尝试转义感叹号或将其删除。 Bash 认为这是一个历史命令
  • 我已经用 ssh 配置示例和关于以 root 身份连接的说明更新了我的答案
  • 我突然想到,在服务器完成重新启动之前,sshd 服务将不可用。所以也许要做的就是等到端口 22 接受连接。我会更新我的答案。
  • 我在答案中添加了端口 22 检查
  • 不客气。慕尼黑的慕尼黑啤酒节绝对优先!
猜你喜欢
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 2022-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多