如何检查远程计算机是否在线以进行 ssh/脚本访问?

Amo*_*o__ 16 networking scripting ssh backup ping

我正在编写一个脚本,将数据从我的笔记本电脑备份到 Ubuntu 服务器。为此,我正在寻找一个 (ba)sh 命令来在开始备份之前测试服务器是否可用。类似于ping在端口 22 上返回一个布尔值的东西。

我怎样才能做到这一点?

bah*_*mat 28

像这样:

nc -z hostname 22 > /dev/null
echo $?
Run Code Online (Sandbox Code Playgroud)

如果是,0那么它是可用的。如果是,1那就不是。

  • 没有 `-w` 选项 nc 将永远卡在 Ubuntu 上 (2认同)

chr*_*ris 14

使用网

nc -z localhost 22
Run Code Online (Sandbox Code Playgroud)

从联机帮助页

 -z      Specifies that nc should just scan for listening daemons,
         without sending any data to them.
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,不知道 nc ,我想知道为什么`nc -z -w 2 192.168.0.123`(-w 是超时选项,以秒为单位)不超时:| (2认同)

小智 6

关于什么

MACHINE=192.168.0.8
exec 3>/dev/tcp/${MACHINE}/22
if [ $? -eq 0 ]
then
    echo "SSH up"
else
    echo "SSH down"
fi
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一不需要安装其他软件包的答案。 (2认同)

小智 5

备用:

nc -vzw 1 hostname 22
Run Code Online (Sandbox Code Playgroud)