不使用 ping 检查计算机的启动或关闭状态

不使用 ping 检查计算机的启动或关闭状态

我有一个功能,目前通过这样做对同一网络中的远程机器进行快速 ping 操作:

ping -n 1

然后,它评估命令是否成功(1 或 0)以确定机器是否已打开电源。

似乎这种方法无法正常工作,因为只有当我尝试 ping 的 IP 的 DNS 解析失败时,我才能从 ping 中得到 1。在任何其他情况下,ping 似乎都会返回零(即使机器确实已关闭),因为它似乎自行回环。

有人有什么好的选择吗?我正在考虑使用 telnet,但这可能需要很长时间才能超时,而我想要最好的性能。

答案1

ICMP 数据报为 32 位,您无需建立任何连接(例如,与使用 TCP 时不同)。正如某些人所说,DNS 与将其定向到 IP
无关,ARP 才是那里工作/失败的那个。ping

使用简单的ping (我不会只 ping 一次)并具有静态 ARP 映射(如@EEAA 所述)或在检查任何内容之前填满服务器的 ARP 缓存,这样当您的交换机询问谁拥有正在 ping 的 IP 的 MAC 地址时就不会出现延迟(并且可能导致故障)

答案2

首先,导致第一次 ping 失败的不是 DNS 解析,而是 ARP 解析。

第二,增加 ping 次数。这是每个商业和 F/OSS 监控系统所做的。

相关内容