使用Shell脚本获取MAC地址

当前,提到的用于获取MAC地址的所有解决方案始终使用eth0。但是,如果接口不是以eth0开头,该怎么办呢?同样在OS X上,接口名称也不同。

eth0接口也可能存在但未使用。即不活跃,它没有一个IP。

因此,有没有一种方法可以获取第一个可用接口Active的MAC地址(即,它具有一个inet地址,我什至不希望有人拥有inet6)。

例如

eth0      Link encap:Ethernet  HWaddr <some addr>

inet6 addr: <some addr> Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:123

RX packets:123 errors:123 dropped:123 overruns:123 frame:123

TX packets:123 errors:123 dropped:123 overruns:123 carrier:123

collisions:123 txqueuelen:123

RX bytes:123 (123 MB) TX bytes:123 (123 KB)

Interrupt:123 Memory:00000000-00000000

eth1 Link encap:Ethernet HWaddr <some addr>

inet addr:<some addr> Bcast:<some addr> Mask:<some addr>

inet6 addr: <some addr> Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:123 Metric:123

RX packets:123 errors:123 dropped:123 overruns:123 frame:123

TX packets:123 errors:123 dropped:123 overruns:123 carrier:123

collisions:123 txqueuelen:123

RX bytes:123 (123 MB) TX bytes:123 (123 KB)

Interrupt:123 Memory:00000000-00000000

注意:我更改了输出值。

因此,在这种情况下,我想要的是eth1而不是eth0的HWaddr。我如何找到它?它还应适用于所有Linux版本。

回答:

请注意,接口名称和MAC地址是一行中的第一个和最后一个字段,没有前导空格。

如果缩进的一行之一包含inet addr:最新的接口名称,则应打印MAC地址。

ifconfig -a |

awk '/^[a-z]/ { iface=$1; mac=$NF; next }

/inet addr:/ { print iface, mac }'

请注意,多个接口可能符合您的条件。然后,脚本将打印多行。(; exit如果您始终只想打印第一个匹配项,则可以在最后一个大括号之前添加。)

以上是 使用Shell脚本获取MAC地址 的全部内容, 来源链接: utcz.com/qa/433109.html

回到顶部