lzap Asked: 2012-05-12 01:36:33 +0800 CST2012-05-12 01:36:33 +0800 CST 2012-05-12 01:36:33 +0800 CST 等待 TCP 套接字在 bash 中可用 772 你好, 我有一个脚本等待一段时间直到一台机器(正在配置)出现,然后它连接到 ssh 并执行一些东西。我为此使用“睡眠”。 我想更改我的脚本以主动检查 bash 循环中的端口,当它准备就绪时(sshd 已启动并接受连接)它将继续。 怎么做?是否有 UNIX 命令可以告诉我 TCP 服务器端口是否响应? unix bash tcp 2 个回答 Voted Best Answer Oliver 2012-05-12T01:39:41+08:002012-05-12T01:39:41+08:00 你为什么不简单地打电话ssh?它将等到远程主机可用并在一段时间后超时。如果出错,会返回255,表示可以重试。 Steffen D. 2021-05-07T08:09:33+08:002021-05-07T08:09:33+08:00 正如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 端口),直到数据可以成功写入。
你为什么不简单地打电话
ssh
?它将等到远程主机可用并在一段时间后超时。如果出错,会返回255,表示可以重试。正如https://stackoverflow.com/a/50055449/15820811中所建议的,您可以使用:
这尝试
mysshserver.example.org
每秒将数据写入(替换为您的服务器)上的端口 22(SSH 端口),直到数据可以成功写入。