Ottieni gli host live Mac nella rete locale
Domanda
Ciao, sto lavorando a una piccola sceneggiatura bash che scansionerà LAN ogni 5 minuti e riceverà un host in diretta e poi riceverà i loro indirizzi MAC.
Finora ho questo:
nmap -sP -n -oG - 10.0.0.1-20 | grep "Up" | awk '{print $2}'
Che mi dà indirizzi IP. Ora devo fare qualcosa di simile
arp -an | grep 'ip'
Ma sono nuovo a Bash e non so come :)
Soluzione
Ecco uno script che fa esattamente quello che vuoi:
#!/bin/bash
HOSTS=$(nmap -sP -n -oG - 192.168.1.1-10 | grep "Up" | awk '{print $2}')
for host in ${HOSTS}; do
arp -an | grep ${host} | awk '{print $2 $4}'
done
Altri suggerimenti
Prova a usare arp-scan
, per esempio:
sudo arp-scan --interface=wlan0 192.168.1.0/24
Per la seconda parte della query è possibile utilizzare Arping:
for host in $(nmap -sP -n -oG - 192.168.83.1-35 | grep "Up" | awk '{print $2}');
do arping $host -c 1;
done
Questo emette tutti i record in un formato greppable:
nmap -n -sP 10.0.3.0/24 | awk '/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}'
Sembra funzionare anche per IP/Mac che non sono già nella tabella ARP host. È una buona cosa. Sul mio sistema lo script dalla risposta accettata mostra solo host elencati nella tabella ARP ...
Risultati in:
10.0.3.100 B8:27:EB:8E:C5:51
10.0.3.101 00:26:B6:E1:4B:EB
10.0.3.112 00:01:29:02:55:25
etc..
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow