/ / Obtenha hosts ao vivo MAC na rede local - bash, ip, ping, arp, nmap

Obter hosts ao vivo MAC na rede local - bash, ip, ping, arp, nmap

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 № 1

Aqui 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..