有没有办法执行像ping 10.0.0.0 0.255.255.255
(通配符掩码)这样的命令,而无需安装程序,或者以类似的方式 ping 特定网络/子网内的每个节点?
我看到了类似ping -b
广播ping的东西,但是它似乎不起作用(可能是因为路由器不接受它,但我不确定)。
答案1
ping
不会使用网络掩码或通配符。
你可以对子网的广播地址进行泛洪 ping 并监控回复,尽管许多路由器会拒绝通过广播路由 ICMP,因为这通常被视为滥用流量。另外,只有 root 才能以零间隔进行洪泛。
例如:
ping -fb <BROADCAST ADDRESS>
相反,你真的应该使用网络映射以友好的方式。
预计到达时间:如果你想要的是节点回复列表,我们可以变得更聪明一点:
ping -b -c 2 -i 20 <BROADCAST ADDRESS>
允许-b
ping 广播地址,-c 2
告诉 ping 发送两次 ping,-i 20
告诉 ping 在两次 ping 之间等待二十秒。
这样,您将获得一个几乎即时的回复列表,并在终止前等待 20 秒,然后是流量统计信息。之所以要发出两个 ping 回应请求,是因为如果您设置了-c 1
,ping 将在收到第一个响应时终止。我们在两次请求之间设置了 20 秒,以便回复列表具有一定的可读性。这是一个 hack,但它确实有效。
从这里,您可以通过管道来抑制统计数据输出head -n-4
,然后执行有用的awk
技巧sort
等uniq
来构建有用的单行报告。