Linux

等待 SSH 伺服器啟動的 Linux 命令

  • July 10, 2020

我有一個創建虛擬機並返回 IP 地址的腳本。然後我想做這樣的事情:

waitforssh 192.168.2.38 && ssh 192.168.2.38

它將等待機器啟動並 ssh 響應,然後 ssh 進入它。

waitforssh是我需要找到的命令。

nmap、netcat、fping 或 ping 能勝任嗎?我嘗試了 netcat,但如果主機無法訪問,它會在幾秒鐘內放棄。

它需要處理機器本身正在啟動並且可能需要一些時間來響應網路數據包的事實。

我沒有可以通過 ssh 連接並控制它是否啟動的主機,但這應該可以:

while ! ssh <ip>
do
   echo "Trying again..."
done

或者更明確的 shell 腳本:

#!/bin/sh

ssh $1
while test $? -gt 0
do
  sleep 5 # highly recommended - if it's in your local network, it can try an awful lot pretty quick...
  echo "Trying again..."
  ssh $1
done

將其另存為(比如說)waitforssh.sh,然後呼叫它sh waitforssh.sh 192.168.2.38

像這樣簡單的事情就可以完成,在嘗試之間等待 5 秒並丟棄 STDERR

until ssh <host> 2> /dev/null
 do
   sleep 5
 done

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