Come faccio a scoprire tutti i dispositivi sulla mia LAN eseguendo il ping di tutti sul terminale? Quale sarebbe il codice?
Probabilmente il modo più semplice per farlo è usare un'utilità della riga di comando chiamata nmap. Puoi scaricare i binari dal sito principale. In alternativa, se hai Homebrew installato, puoi usarlo per installare nmap da un terminale digitando brew install nmap
Una volta scaricato e installato nmap, hai bisogno di un'altra informazione sulla tua LAN - quale blocco di indirizzo IP viene utilizzato per le macchine su di esso. Il modo più semplice per scoprirlo è eseguire ifconfig -a inet
da un terminale. Quando lo digiti, l'interfaccia di rete en0 o en1 dovrebbe avere una voce inet (ignora l'indirizzo inet per lo0 ). È l'indirizzo IP accanto a cui sei interessato. Ecco un esempio di output dalla mia macchina:
$ ifconfig -a inet
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=3<RXCSUM,TXCSUM>
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=27<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.0.6 netmask 0xffffff00 broadcast 192.168.0.255
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
Sulla mia rete, la mia macchina ha l'indirizzo 192.168.0.6 sull'interfaccia en1 .
NOTA : a seconda del numero di computer presenti sulla rete, il ping di tutti potrebbe richiedere molto tempo. Nei seguenti esempi, presumo che tu abbia meno di 256 dispositivi sulla tua rete e che siano tutti nella stessa sottorete, probabilmente se questa è una rete domestica.
Se il tuo inet è uguale a 192.168. NN (dove ogni N è un numero compreso tra 0-255), il seguente comando proverà per eseguire il ping degli indirizzi 192.168. N .0 a 192.168. N .255 sulla rete e segnalare le macchine che rispondono (è necessario utilizzare sudo in modo che nmap possa utilizzare ICMP ping). Compila le sezioni N con il numero corrispondente nel tuo inet indirizzo:
sudo nmap -sn -PE 192.168.N.0/24
Ad esempio, se il tuo indirizzo inet è stato segnalato come 192.168.1.100, devi digitare: sudo nmap -sn -PE 192.168.1.0/24
Se il tuo inet indirizzo appare come 10. NNN , usa questo, riempiendo nuovamente le sezioni N con i tuoi numeri segnalati:
sudo nmap -sn -PE 10.N.N.0/24
E infine, se sembra 172. N.N.N , usa questo:
sudo nmap -sn -PE 172.N.N.0/24
Se si desidera espandere la ricerca per includere più macchine, è necessario regolare il numero dopo la barra nella sezione degli indirizzi per il comando. Nei tre comandi precedenti, ho specificato /24
. Ciò significa che nmap utilizzerà i primi 24 bit dell'indirizzo IP che hai specificato e genererà automaticamente gli altri numeri (nel primo esempio nmap usa 192.168. N come parte esatta, dato che ogni gruppo è 8 bit). Quindi per cercare più indirizzi diminuire il numero dopo la barra. /24
cercherà 256 indirizzi, /23
cercherà 512 indirizzi, /22
cercherà 1024.
Ogni volta che riduci il numero di 1, il doppio degli indirizzi viene cercato: ecco perché diminuirlo troppo può rendere la ricerca molto lunga. Ad esempio, per cercare tutti gli indirizzi 192.168. N.N , devi specificare 192.168.0.0/16
- ma questo dovrà eseguire il ping di 65536 macchine. Supponendo 0,25 ping al secondo, ci vorrebbero 4 ore per completare ...
In realtà non so quanti nigs ping al secondo possono inviare, ma se provi una scansione completa, potresti doverla lasciare durante la notte, o almeno avere un caffè lungo.
Solo per quello che sai, ecco cosa significano le altre opzioni di nmap che ho specificato:
-sn (No port scan)
-PE (ICMP ping echo)
Come può suggerire l'opzione "nessuna porta di scansione", puoi fare ogni sorta di cose molto divertenti con nmap, come controllare per vedere quali porte sono aperte su una macchina (per dire quali servizi sono probabilmente in esecuzione) e può anche indovinare quale sistema operativo la macchina target è in esecuzione con un grado di accuratezza abbastanza decente. Se hai bisogno di cose più avanzate come quella, controlla i documenti nmap. Mi collegherei a loro, ma non sono abbastanza rinomato per pubblicare più di 2 collegamenti.
Oppure effettua il ping dell'indirizzo di broadcast
ping -c 3 192.168.1.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq
Se tutto è attivo, reattivo e in una sottorete, qualcosa come "ping 192.168.1" per alcuni secondi seguito da "arp -a" dovrebbe fornire un elenco di tutti i dispositivi con indirizzo IP e indirizzo MAC.