等待 SSH 服务器启动的 Linux 命令

Web*_*ide 13 linux ssh ping socket pause

我有一个脚本,它创建一个虚拟机并给我一个 IP 地址。然后我想做这样的事情:

waitforssh 192.168.2.38 && ssh 192.168.2.38
Run Code Online (Sandbox Code Playgroud)

它将等待机器启动并且 ssh 响应,然后 ssh 进入它。

waitforssh是我需要找到的命令。

nmap、netcat、fping 或 ping 可以完成这项工作吗?我尝试过 netcat,但如果主机无法访问,它会在几秒钟内放弃。

它需要处理机器本身正在启动并且可能需要一些时间来响应网络数据包的事实。

小智 15

我没有可以通过 ssh 连接并控制它是否启动的主机,但这应该有效:

while ! ssh <ip>
do
    echo "Trying again..."
done
Run Code Online (Sandbox Code Playgroud)

或者更明确的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
Run Code Online (Sandbox Code Playgroud)

将其另存为(说)waitforssh.sh然后用sh waitforssh.sh 192.168.2.38