等待 TCP 套接字在 bash 中可用

等待 TCP 套接字在 bash 中可用

赫莉,

我有一个脚本,它会等待一段时间,直到一台机器(正在配置)启动,然后连接到 ssh 并执行某些操作。我为此使用了“睡眠”。

我想改变我的脚本以在 bash 循环中主动检查端口,并且当它准备就绪(sshd 已启动并接受连接)时它将继续。

怎么做?是否有 UNIX 命令可以告诉我 TCP 服务器端口是否响应?

答案1

为什么不直接调用ssh?它会等待远程主机可用,一段时间后超时。如果发生错误,它会返回 255,这意味着您可以重试。

答案2

正如建议的那样https://stackoverflow.com/a/50055449/15820811, 您可以使用:

until printf "" 2>>/dev/null >>/dev/tcp/mysshserver.example.org/22; do sleep 1; done

这将每秒尝试将数据写入mysshserver.example.org(替换为您的服务器) 上的端口 22(SSH 端口),直到数据可以成功写入。

相关内容