Если использование сторонней утилиты не является проблемой для вас, я рекомендую попробовать:
arp-scan (доступно через Homebrew )
brew install arp-scan
arp-scan --localnet
fing (загрузите и установите пакет «Desktop Embedded CLI» с веб-сайта fing.com или через Homebrew brew cask install fing
)
sudo fing -r 1 -d true -o table,text
Обе утилиты имеют ряд дополнительных режимов и функций. Я предлагаю прочитать руководства полностью, чтобы получить максимальную отдачу от них.
Если вам нужно избегать использования сторонних инструментов, вот способ сделать что-то подобное со встроенными командами. Вы можете запустить их в интерактивном режиме, но, вероятно, проще сохранить их как скрипт. NB держать его коротким, этот сценарий не делает проверку на наличие ошибок, и работает только на / 24 подсеть. Изменение его для работы с подсетями других размеров оставлено читателю в качестве упражнения :)
#!/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}}'
Это должно вывести что-то вроде:
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)