He leído casi todos los hilos relacionados con esto, pero nadie ha facilitado el acceso a una tabla como la siguiente.
IP Address Hostname MAC Address
192.168.1.10 | myAppleTV | 02:78:42:9b:bb:12
192.168.1.10 | myiPhone | b2:18:4a:3a:42:22
192.168.1.10 | myiMac | 09:17:a2:95:c4:00
192.168.1.10 | myCanonPrinter| a0:ea:72:77:b4:aa
La mayoría de las veces uso arp -a
y también hay dns-sb
, pero ninguno de ellos hace que sea fácil encontrar 3 piezas clave de información cada vez que estoy jugando en la red, es decir, dirección IP, nombre de host y dirección MAC. ¡Me sorprende que no haya una utilidad que logre esto!
Si el uso de una utilidad de terceros no es un problema para usted, le recomiendo que pruebe estos:
arp-scan (disponible a través de Homebrew )
brew install arp-scan
arp-scan --localnet
fing (descargue e instale el paquete "Desktop Embedded CLI" desde fing.com o a través de Homebrew brew cask install fing
)
sudo fing -r 1 -d true -o table,text
Ambas utilidades tienen una serie de modos y funciones adicionales. Sugiero leer los manuales en su totalidad para aprovecharlos al máximo.
Si necesita evitar el uso de herramientas de terceros, esta es una manera de hacer algo similar con los comandos integrados. Puede ejecutarlos de forma interactiva, pero probablemente sea más fácil guardarlos como un script. NB para ser breve, este script no verifica errores y solo funciona en subredes /24. Modificarlo para que funcione en subredes de otros tamaños se deja como ejercicio para el lector :)
#!/usr/bin/env bash
tab=$'\t'
pIF=$(echo "show State:/Network/Global/IPv4" | scutil | awk -F: '/PrimaryInterface/{sub(/ /,"",$2); print $2}')
sn=$(ipconfig getifaddr $pIF | sed -En 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
for i in {1..254}; do ping -i0.1 -W100 -c1 $sn.$i | grep from; done
arp -a | grep $pIF | sed -e 's/^\?/unnamed/' -e "s/\ at\ /${tab}/g" -e "s/\ on\ /${tab}/g" -e 's/\ ifscope.*$//g' | awk 'BEGIN { FS="\t"; OFS="\t"; printf "%-17s\t%-15s\t%s\n", "MAC","INTERFACE","HOSTNAME (IP)" } { if($2!="(incomplete)") {printf "%-17s\t%-15s\t%s\n",$2,$3,$1}}'
Esto debería generar algo como:
MAC INTERFACE HOSTNAME (IP)
0:90:b:7a:85:62 en0 r1.lan (192.168.20.1)
2c:36:f8:48:2b:47 en0 cisco-sg300-10p.lan (192.168.20.2)
84:78:ac:a6:95:a0 en0 cisco-sg300-20.lan (192.168.20.3)
b4:fb:e4:cb:93:85 en0 wap1.lan (192.168.20.10)
0:11:32:10:cd:c1 en0 nas.lan (192.168.20.20)
0:11:32:3d:99:c9 en0 nas2.lan (192.168.20.21)
0:11:32:10:cd:c1 en0 unnamed (192.168.20.23)
d4:4b:5e:fe:6a:75 en0 brwd44b5efe6a75.lan (192.168.20.90)
--localnet
no funcionó para mí, pero esto sí (directamente desde la página del manual):arp-scan --interface=en1 192.168.0.0/24
mmmmmm