如何查找本地网络上的所有设备(IP地址,主机名,MAC地址)?


13

我已经阅读了几乎与此相关的每个线程,但没有人像下面这样轻松地访问表。

  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

我大部分时间都使用,但arp -a也有dns-sb,但是当我在网络上四处乱逛时,它们都不容易找到3个关键信息,即IP地址,主机名和MAC地址。令我惊讶的是,没有能够完成此任务的实用程序!


这类信息主要将在路由器上
user151019 '18

Answers:


12

如果使用第三方实用程序对您来说不是问题,那么建议您尝试以下方法:

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 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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.