Siempre puede intentar hacer ping a la dirección de transmisión de su subred. Depende de la configuración de su red local, pero puede averiguarlo con
$ ifconfig wlp4s0 | grep Bcast
inet addr:192.168.199.47 Bcast:192.168.199.255 Mask:255.255.255.0
Hacer ping desde Linux requiere el -b
interruptor de línea de comandos, que es una especie de precaución del comando.
Sin embargo, esto no garantiza que recopilará todas las direcciones MAC de todos los dispositivos conectados a su subred, ya que depende del propio dispositivo responder realmente a las solicitudes ICMP ECHO enviadas a las direcciones de transmisión, incluso si se pretendía lo contrario en las primeras edades de los RFC de TCP/IP (ver si /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
se establece en 1).
Para estar más seguro de cubrir todas las direcciones, haga ping individualmente con
$ for ip in 192.168.199.{1..254}; do ping -c1 ${ip} & done
Más o menos se logra lo mismo si usa un tipo de escaneo especial de nmap con
$ sudo nmap -sn -PE -n 192.168.179.1-254
Esa es también mi forma recomendada de sondear, ya que puede ajustar la forma en que solicita a los clientes sus direcciones MAC.
Todo lo que está haciendo es hacer ping a la dirección de transmisión. La versión GNU/Linux de ping requiere que use el -b
cambiar
-b Permitir hacer ping a una dirección de transmisión
No parece haber un equivalente directo de Solaris -s
cambiar cualquiera de los dos (solo hace ping cada segundo y recopila estadísticas), pero tal vez esté enterrado en las páginas del manual de Linux; vale la pena leerlo (como pueden ser los de Solais).
Yo tampoco haría ping 255.255.255.255 (puede tardar un poco en completarse), usaría la dirección de transmisión de la red a la que estaba conectado.