2011-02-04 2 views
2

Salut Je travaille sur un petit script bash qui va scanner LAN toutes les 5 minutes et obtenir l'hôte en direct, puis obtenir leurs adresses MAC.Obtenez les hôtes vivants MAC dans le réseau local

Jusqu'à présent, j'ai ceci:

nmap -sP -n -oG - 10.0.0.1-20 | grep "Up" | awk '{print $2}' 

Ce qui me donne les adresses IP. Maintenant, je dois faire quelque chose comme

arp -an | grep 'ip' 

mais je suis nouveau bash et je ne sais pas comment :)

Répondre

4

Voici une script qui fait exactement ce que vous voulez:

#!/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 
+0

great !! Le problème est maintenant que je reçois une erreur comme - (10.0.0.10) (incomplète). – ajitam

2

Essayez d'utiliser arp-scan, par exemple:

sudo arp-scan --interface=wlan0 192.168.1.0/24 
0

Pour la deuxième partie de la requête vous pouvez utiliser arping:

for host in $(nmap -sP -n -oG - 192.168.83.1-35 | grep "Up" | awk '{print $2}'); 
    do arping $host -c 1; 
done 
0

Celui-ci sort tous les enregistrements dans un format greppable:

nmap -n -sP 10.0.3.0/24 | awk '/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}' 

Il semble fonctionner aussi pour ce qui ne sont pas déjà des IP de/MAC dans les hôtes de la table ARP. C'est une bonne chose. Sur mon système le script de la réponse acceptée montre que des hôtes qui sont répertoriés dans la table ARP ...

résultats dans:

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.. 
Questions connexes