如何找出网络上所有计算机的mac地址


31

有什么简单的方法可以找出网络上所有计算机的mac地址,而不是对每台ifconfig | grep HWaddr计算机都进行SSH,如果网络上有300台计算机,我真的需要一些简单的解决方案。


2
为了完整起见:arp -n 0.0.0.0其中0.0.0.0是设备的IP地址。请注意,您仍然一次只能搜索一个。有时,您只需要一个,这肯定比将它们拖入每个盒子要快。如果是Windows盒子或打印机怎么办?
d -_- b 2012年

2
sudo arp-scan --localnet
Silver Moon

Answers:


34

您可以使用nmap运行ping扫描。

nmap -sP 192.168.254.*

Starting Nmap 5.00 ( http://nmap.org ) at 2011-03-09 11:32 GMT
Host xyzzy.lan (192.168.254.189) is up (0.00022s latency).
MAC Address: 00:0C:29:5B:A5:E0 (VMware)
Host plugh.lan (192.168.254.196) is up (0.00014s latency).
MAC Address: 00:0C:29:2E:78:F1 (VMware)
Host foo.lan (192.168.254.200) is up.
Host bar.lan (192.168.254.207) is up (0.00013s latency).
MAC Address: 00:0C:29:2D:94:A0 (VMware)
Nmap done: 256 IP addresses (4 hosts up) scanned in 3.41 seconds

编辑:

sed脚本将输出过滤到IP-> MAC-将其放入文件中。

/^Host.*latency.*/{
    $!N
    /MAC Address/{
        s/.*(\(.*\)) .*MAC Address: \(.*\) .*/\1 -> \2/
    }
}  
/[Nn]map/d
s/^Host .*is up/& but MAC Address cannot be found/

像这样使用

nmap -sP 192.168.254.0/20 | sed -f sedscript
192.168.254.189 -> 00:0C:29:5B:A5:E0
192.168.254.196 -> 00:0C:29:2E:78:F1
Host foo.lan (192.168.254.200) is up but MAC Address cannot be found.
192.168.254.207 -> 00:0C:29:2D:94:A0

是的,这就是我一直在寻找的内容,我阅读了其他消息,这也不是Cisco交换机,因此非常感谢所有这些消息。
注册用户

1
我发现使mac地址显示出来的唯一方法是以root身份运行nmap。另外,该刻痕似乎不再起作用。[IP地址附近的文本已更改。
monksy 2013年

192.168.1.147主机的Nmap扫描报告已启动(延迟0.00045s)。MAC地址:XX:XX:XX:XX:XX:XX
僧侣

16

使用nmap。以root身份运行它很重要,这样您可以获得MAC地址。例:

sudo nmap -sP 192.168.1.0/24 

将扫描192.168.1.1-192.168.1.255。如果您不熟悉此子网表示法,请在Wiki上查找CIDR表示法。

您应该能够从任何最新的Linux发行版的存储库中获取nmap,例如

sudo apt-get install nmap

要么

sudo yum install nmap

我的网络的示例输出:

Host 192.168.1.1 is up (0.0069s latency).
MAC Address: 00:0D:54:9B:D8:F4 (3Com)
Host 192.168.1.78 is up (0.0068s latency).
MAC Address: 00:0C:29:BC:3D:1C (VMware)
Host 192.168.1.91 is up (0.0038s latency).
MAC Address: 00:0C:29:8A:F4:A3 (VMware)
Host 192.168.1.92 is up (0.0039s latency).
MAC Address: 00:0C:29:65:60:5F (VMware)
Host 192.168.1.158 is up (0.033s latency).
MAC Address: 00:0C:29:82:24:EA (VMware)
Host 192.168.1.186 is up (0.0024s latency).
MAC Address: 00:0C:29:3E:26:1F (VMware)
Host 192.168.1.190 is up (0.0066s latency).

是的,您的方法很简单。
注册用户

7

只要您从同一网段中的主机运行此命令,nmap就会报告发现每个主机的所有MAC地址。

例如:

sudo nmap 192.168.1.0/24 -sP

Starting Nmap 4.76 ( http://nmap.org ) at 2011-03-09 06:29 EST

Host old.net (192.168.1.1) appears to be up.
MAC Address: 00:18:39:C5:A1:DC (Cisco-Linksys)

对于MAC地址,我需要在Ubuntu机器上是root用户。同样,对于单个主机,一种简单的方法是仅对它进行ping操作并查看arp表,arp -a如果您只想使用发行版的初始安装中通常包含的命令:

arp -a | grep -v incomplete
foo.net (192.168.1.145) at 00:0d:4b:6a:2c:cb [ether] on eth0

7

试试这个命令:

arp-scan --interface=eth0 192.168.1.0/24

我知道这是一个非常老的问题。但是,nmap没有给我任何MAC地址。arp-scan做了。谢谢。
MikeP '17

5

根据您的LAN拓扑,您最好的选择可能是在交换机上显示MAC地址表。

因此,例如,如果您的交换机基础架构是思科,则可以尝试

sh mac address-table

在每个开关上。

如果您有许多交换机,则可以使用SNMP自动执行此任务。

另一个选择,并且(再次)取决于您的拓扑和网络设备的类型,您还可以尝试获取在路由器上显示arp表的设备的mac地址。

使用这两种方法中的任一种,您还将获得连接到网络基础结构的任何设备的mac地址列表:PC,打印机,接入点等。在第一种情况下,甚至是没有IP地址的设备。这可能是您想要的,也可能不是您想要的,但值得一试。



1

由于您提到过将ssh接入网络中的计算机,因此您也可以使用以下简称:

nmap -p 22 10.100.10.0/24 >/dev/null ; arp -a

0

您可以使用一个名为SIW的程序,该程序是免费的,可以扫描不需要权限或args的网络。

网址:http//www.gtopala.com/

在.exe中可用,或完全安装。


。可执行程序?标签显示“ Linux-Netowrking”
d -_- b
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.