Oi, eu estou trabalhando em um pequeno script bash que irá verificar a lan a cada 5 minutos e obter host ao vivo e, em seguida, obter os endereços MAC deles.
Até agora eu tenho isso:
nmap -sP -n -oG - 10.0.0.1-20 | grep "Up" | awk "{print $2}"
O que me dá endereços IP. Agora eu tenho que fazer algo como
arp -an | grep "ip"
mas eu sou novo no bash e não sei como :)
Respostas:
4 para resposta № 1Aqui está um script que faz exatamente o que você deseja:
#!/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
2 para resposta № 2
Tente usar arp-scan
, por exemplo:
sudo arp-scan --interface=wlan0 192.168.1.0/24
0 para resposta № 3
Para a segunda parte da consulta, você poderia usar 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 para a resposta № 4
Este gera todos os registros em um formato greppable:
nmap -n -sP 10.0.3.0/24 | awk "/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}"
Parece funcionar também para IP "s / MAC" s que sãoainda não está na tabela de hosts ARP. Isso é uma coisa boa. No meu sistema, o script da resposta aceita mostra apenas os hosts listados na tabela ARP ...
Resulta em:
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..