Si utilizar una utilidad de terceros no es un problema para usted, le recomiendo que pruebe esto:
arp-scan (disponible a través de Homebrew )
brew install arp-scan
arp-scan --localnet
fing (descargue e instale el paquete "Desktop Embedded CLI" de fing.com o de Homebrew brew cask install fing
)
sudo fing -r 1 -d true -o table,text
Ambas utilidades tienen varios modos y características adicionales. Sugiero leer los manuales en su totalidad para aprovecharlos al máximo.
Si necesita evitar el uso de herramientas de terceros, aquí hay una manera de hacer algo similar con los comandos integrados. Puede ejecutarlos de forma interactiva, pero probablemente sea más fácil guardarlo como un script. Nota: para que sea 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)