如何在不 ping 的情况下检查 *nix 机器是否在线?

如何在不 ping 的情况下检查 *nix 机器是否在线?

我有一个 bash 脚本,它使用 rsync 将文件从两个远程工作站(unix 和 linux)备份到本地硬盘。我希望脚本在运行 rsync 之前检查工作站是否在线。我能想到的最简单的方法是使用 ping:

ping -s 1 -c 1 $SERVN > /dev/null; echo $?

这对于一个工作站来说很好,但出于安全原因,另一个工作站上的 ping 被禁用。我试过 nc,但它也不起作用。我还尝试使用 ssh 或 rsync “ping” 机器,但当然我得到了密码提示,这有点违背了这样做的目的。有人有什么建议/想法吗?谢谢

答案1

nc -z $REMOTESERVER 22 
echo $?

如果您使用 SSH 执行 rsync,则该端口应该是打开的。

答案2

ssh $REMOTESERVER -o PasswordAuthentication=no

这应该尝试通过 SSH 连接,但不会提示输入密码,因为该方法已被选项禁用。

警告:此连接尝试可能被视为“登录失败”,并且您可能会将自己锁定在外,例如如果您使用 DenyHosts。

答案3

hping $REMOTESERVER -S -p 22 -c 2 >/dev/null 2>&1; echo $?

相关内容