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

Reg*_*ser 31 find grep awk sed linux-networking

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

use*_*517 35

您可以使用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
Run Code Online (Sandbox Code Playgroud)

编辑:

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

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

并像这样使用它

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
Run Code Online (Sandbox Code Playgroud)


小智 16

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

sudo nmap -sP 192.168.1.0/24 
Run Code Online (Sandbox Code Playgroud)

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

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

sudo apt-get install nmap
Run Code Online (Sandbox Code Playgroud)

或者

sudo yum install nmap
Run Code Online (Sandbox Code Playgroud)

我的网络的示例输出:

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).
Run Code Online (Sandbox Code Playgroud)


小智 9

试试这个命令:

arp-scan --interface=eth0 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)


Kyl*_*ndt 7

只要你在同一个网段的主机上运行这个命令,nmap就会报告每台主机的所有MAC地址是discovers。

例如:

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)
Run Code Online (Sandbox Code Playgroud)

对于 MAC 地址,我需要在我的 Ubuntu 机器上成为 root。arp -a如果您只想使用通常包含在发行版初始安装中的命令,那么对于单个主机来说,一个简单的方法就是 ping 它并查看 arp 表:

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


jli*_*ndo 5

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

例如,如果您的交换机基础设施是 Cisco,您可以尝试一个

sh mac address-table
Run Code Online (Sandbox Code Playgroud)

在每个开关上。

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

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

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