使用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