Puoi sempre provare a eseguire il ping all'indirizzo di trasmissione della tua sottorete. Dipende dalla configurazione della tua rete locale, ma puoi scoprirlo con
$ ifconfig wlp4s0 | grep Bcast
inet addr:192.168.199.47 Bcast:192.168.199.255 Mask:255.255.255.0
Il ping da Linux richiede -b
switch della riga di comando, che è una specie di precauzione del comando.
Tuttavia, ciò non garantisce che raccoglierai tutti gli indirizzi MAC da tutti i dispositivi connessi alla tua sottorete poiché spetta al dispositivo stesso rispondere effettivamente alle richieste ICMP ECHO inviate agli indirizzi di trasmissione, anche se ciò era inteso diversamente nei primi anni di le RFC TCP/IP (vedere se /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
è impostato su 1).
Per essere più sicuro di coprire tutti gli indirizzi, esegui il ping individualmente con
$ for ip in 192.168.199.{1..254}; do ping -c1 ${ip} & done
Più o meno lo stesso si ottiene se si utilizza uno speciale tipo di scansione di nmap con
$ sudo nmap -sn -PE -n 192.168.179.1-254
Questo è anche il mio modo consigliato di sondare poiché puoi mettere a punto il modo in cui chiedi ai client i loro indirizzi MAC.
Tutto quello che stai facendo è eseguire il ping dell'indirizzo di trasmissione. La versione GNU/Linux di ping richiede l'utilizzo del -b
cambia
-b Consente il ping di un indirizzo broadcast
Non sembra esserci un equivalente diretto del Solaris -s
cambia (fa solo ping ogni secondo e raccoglie statistiche) ma forse è sepolto nelle pagine man di Linux - vale la pena leggerlo (come potrebbero essere quelle di Solais ).
Non andrei nemmeno a eseguire il ping 255.255.255.255 (potrebbe volerci un po' per completare) Userei l'indirizzo di trasmissione della rete a cui ero connesso.