比 ping 检查计算机是否在线更快的方法?

Jon*_*now 20 networking scripting wake-on-lan ping

我正在为我们的一组实验室计算机编写唤醒唤醒脚本。我们有一个带有计算机主机名、IP 和 MAC 列表的 sqlite db,目前我用“-c1”对它们中的每一个进行 ping 操作,因此它不会无休止地运行 - 但即使这样也需要一些等待,有没有更快的方法来获得回答而不是ping?使用 ping 似乎会减慢脚本的速度,因为它需要 ping 答案才能继续。

非常感谢您的任何建议!

mat*_*tdm 20

发送单个数据包并等待响应将是最快的方法之一,而 ping 是一种很好的方法。事实上,根据您的用例,我认为它太快了,因为它并没有真正告诉您系统是否真的在做任何有用的事情,只是内核的网络子系统处于活动状态并已配置。

但假设这足够好,您可以进行一些改进。首先,您可以使用-W1将 ping 超时减少到一秒。其次,您可以让脚本异步(在后台线程中)ping 不同的主机,并根据需要检查结果而不是等待。

或者,您可以重新考虑该方法,并在远程系统启动时以某种方式检查它们,如果系统尚未检查,您可以假设它已关闭。

  • 它们很小;有 56 个数据字节的默认值,您可以减少它。但在任何情况下,它都比以太网 MTU 小,比什么都大,所以无论哪种方式,它都归结为“一个数据包”。 (4认同)
  • 如果发送较小的数据包会有所不同,我会感到震惊。 (3认同)

Tho*_*sen 7

这就是 fping 的设计目的。http://fping.sourceforge.net/

您需要在之后解析输出而不是依赖返回码,但它比执行普通 ping 快得多。