Bash

等到 TCP 套接字在 bash 中可用

  • May 6, 2021

你好,

我有一個腳本等待一段時間,直到機器(正在配置)出現,然後它連接到 ssh 並執行某些操作。我為此使用“睡眠”。

我想更改我的腳本以在 bash 循環中主動檢查埠,並且當它準備好時(sshd 已啟動並接受連接)它將繼續。

怎麼做?是否有 UNIX 命令能夠告訴我 TCP 伺服器埠是否響應?

你為什麼不簡單地打電話ssh?它將等到遠端主機可用並在一段時間後超時。如果發生錯誤,它將返回 255,這意味著您可以重試。

正如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 埠),直到可以成功寫入數據。

引用自:https://serverfault.com/questions/388184