【发布时间】: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