在 Linux 上获取物理网卡的 Mac 地址

Mas*_*rry 5 networking linux c

我正在尝试获取 Linux 机器的 MAC 地址。我只想要物理网卡,而不是虚拟网卡。我一直在进行一些搜索,也许我没有输入正确的术语来在谷歌上找到一些东西。我知道 ifconfig -a 可以显示有关 NIC 的信息,但目前我没有找到区分物理与虚拟的方法。另外,我最终希望将其编程为 C 语言,因此与 C 语言兼容的东西将是令人惊奇的。

谢谢。很高兴回答任何和所有问题。

Mar*_*iae 4

lshw将为您执行此操作:

  sudo lshw -C network
Run Code Online (Sandbox Code Playgroud)

比如我的wifi卡显示如下:

 *-network
   description: Wireless interface
   product: Centrino Advanced-N 6235
   vendor: Intel Corporation
   physical id: 0
   bus info: pci@0000:04:00.0
   logical name: wlan0
   version: 24
   serial: c8:f7:33:4c:cc:e1
   width: 64 bits
   clock: 33MHz
   capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
   configuration: broadcast=yes driver=iwlwifi driverversion=3.11.0-15-generic firmware=18.168.6.1 latency=0 link=no multicast=yes wireless=IEEE 802.11abgn
   resources: irq:47 memory:e2500000-e2501fff
Run Code Online (Sandbox Code Playgroud)

MAC 地址当然就是序列号。请注意,即使您使用macchanger更改了 wifi 卡的表观 MC 地址,lshw仍会显示真实的 MAC 地址,这与ifconfig不同,后者显示更改后的 MAC 地址。此外,没有提及在此硬件上构建的接口。

最后,根据其手册页,lshw ...

...目前支持 DMI(仅限 x86 和 IA-64)、OpenFirmware 设备树(仅限 PowerPC)、PCI/AGP、CPUID (x86)、IDE/ATA/ATAPI、PCMCIA(仅在 x86 上测试)、SCSI 和 USB。

这是我能找到的最完整的报道。