Si l'utilisation d'un utilitaire tiers n'est pas un problème pour vous, je vous recommande d'essayer ces derniers:
arp-scan (disponible via Homebrew )
brew install arp-scan
arp-scan --localnet
fing (téléchargez et installez le package "Desktop Embedded CLI" depuis fing.com ou via Homebrew brew cask install fing
)
sudo fing -r 1 -d true -o table,text
Les deux utilitaires ont un certain nombre de modes et fonctionnalités supplémentaires. Je suggère de lire entièrement les manuels pour en tirer le meilleur parti.
Si vous devez éviter d'utiliser des outils tiers, voici un moyen de faire quelque chose de similaire avec les commandes intégrées. Vous pouvez les exécuter de manière interactive, mais il est probablement plus facile de l'enregistrer en tant que script. NB pour être bref, ce script ne vérifie pas les erreurs et ne fonctionne que sur les sous-réseaux / 24. Le modifier pour qu'il fonctionne sur des sous-réseaux d'autres tailles est laissé au lecteur comme exercice :)
#!/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}}'
Cela devrait produire quelque chose comme:
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)