当前位置:  开发笔记 > 编程语言 > 正文

从ifconfig的输出中提取MAC地址的最佳方法是什么?

如何解决《从ifconfig的输出中提取MAC地址的最佳方法是什么?》经验,为你挑选了4个好方法。

ifconfig输出中提取MAC地址的最佳方法是什么?

样本输出:

bash-3.00# ifconfig eth0        
eth0      Link encap:Ethernet  HWaddr 1F:2E:19:10:3B:52    
          inet addr:127.0.0.66  Bcast:127.255.255.255  Mask:255.0.0.0    
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          ....
          ....

我应该使用cut,AWK还是其他任何东西,以及一种方法相对于另一种方法的优点和缺点.



1> Michalis..:

你可以做一只猫 /sys/class/

cat /sys/class/net/*/address

专门为 eth0

cat /sys/class/net/eth0/address



2> Robert Gambl..:

我会用:

ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

-o将导致grep仅打印与表达式匹配的行的部分. [[:xdigit:]]{1,2}将匹配1或2个十六进制数字(Solaris不输出前导零).


那个'grep -o'也是我熟悉的补充.

3> Jerub..:

我喜欢使用/ sbin/ip来完成这些任务,因为它更容易解析:

$ ip link show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff

您可以使用awk从此输出中轻松获取mac地址:

$ ip link show eth0 | awk '/ether/ {print $2}'
00:0c:29:30:21:48

如果你想付出更多的努力,并解析更多的数据,我建议使用ip命令的-online参数,这将让你将每一行视为一个新设备:

$ ip -o link 
1: lo:  mtu 16436 qdisc noqueue \    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000\    link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff
3: eth1:  mtu 1500 qdisc pfifo_fast qlen 1000\    link/ether 00:0c:29:30:21:52 brd ff:ff:ff:ff:ff:ff
4: tun0:  mtu 1500 qdisc pfifo_fast qlen 100\    link/[65534] 
5: sit0:  mtu 1480 qdisc noop \    link/sit 0.0.0.0 brd 0.0.0.0



4> albertb..:

不确定是否确实有任何优势,但你可以简单地使用awk:

ifconfig eth0 | awk '/HWaddr/ {print $5}'

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有