查找某个mac地址的计算机名,如何查找本地网络上的所有设备(IP地址,主机名,MAC地址)?…
如果使用第三方实用程序对您来说不是问题,那么建议您尝试以下方法:
arp-scan(可通过Homebrew获得)
brew install arp-scan
arp-scan –localnet
fing(从fing.com或通过Homebrew 下载并安装“台式机嵌入式CLI”软件包brew cask install fing)
sudo fing -r 1 -d true -o table,text
这两个实用程序都具有许多其他模式和功能。我建议您完整阅读手册,以充分利用它们。
如果您需要避免使用第三方工具,则可以使用以下方法来执行内置命令。您可以以交互方式运行它们,但是将其另存为脚本可能更容易。注意,为简短起见,此脚本不进行错误检查,仅在/ 24子网中有效。修改它以使其可以在其他大小的子网上工作,这是读者的一项练习:)
#!/usr/bin/env bashtab=$’\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’)foriin{1..254};doping-i0.1-W100-c1 $sn.$i|grep from;donearp-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)