Linux:平铺子网中的所有主机

有一个solaris命令通过发出以下命令来ping子网中的所有主机:

ping -s 255.255.255.255 

linux中有没有类似的东西? 我的意图是在ping所有主机之后find如下的一个mac地址:

 arp -an | grep mac_address 

你所做的只是ping广播地址。 ping的GNU / Linux版本要求您使用-b开关

-b允许ping一个广播地址

似乎并没有像Solaris- -s交换机那样直接相当于(它只是每秒钟都在testing并收集统计信息),但也许它被埋在了Linux手册页中 – 非常值得一读(可能是Solais的 )。

我也不会ping 255.255.255.255(这可能需要一段时间才能完成)我会使用我连接的networking的广播地址。

您可以随时尝试ping到您子网的广播地址。 这取决于你的本地networking设置,但你可以find它

 $ ifconfig wlp4s0 | grep Bcast inet addr:192.168.199.47 Bcast:192.168.199.255 Mask:255.255.255.0 

从Linux Pinging需要-b命令行开关,这是命令的一种预防措施。

但是,这并不能保证您将收集所有连接到您的子网的设备的所有MAC地址,因为它是用来实际回答发送给广播地址的ICMP ECHO请求的设备,即使这是在早期TCP / IP RFC(请参阅/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts是否设置为1)。

要更确定地覆盖所有地址,请单独使用ping命令

 $ for ip in 192.168.199.{1..254}; do ping -c1 ${ip} & done 

如果您使用nmap的特殊扫描types,或多或less会相同

 $ sudo nmap -sn -PE -n 192.168.179.1-254 

这也是我推荐的探测方式,因为你可以微调你询问客户MAC地址的方式。

尝试

 ping -b 10.0.0.255 

在ifconfig show广播地址是10.0.0.255的地方