从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还是其他任何方法,其中一种方法相对于另一种方法的优缺点是什么?
发布于 2011-06-14 01:53:41
你可以在/sys/class/
下做一只猫
cat /sys/class/net/*/address
专门针对eth0
cat /sys/class/net/eth0/address
发布于 2008-10-29 05:56:43
我将使用:
ifconfig eth0 | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
-o将导致grep只打印与表达式匹配的那部分行。[[:xdigit:]]{1,2}
将匹配1或2个十六进制数字(Solaris不输出前导零)。
发布于 2008-10-29 11:58:41
我喜欢使用/sbin/ip来完成这类任务,因为它更容易解析:
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue \ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:0c:29:30:21:48 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000\ link/ether 00:0c:29:30:21:52 brd ff:ff:ff:ff:ff:ff
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 100\ link/[65534]
5: sit0: <NOARP> mtu 1480 qdisc noop \ link/sit 0.0.0.0 brd 0.0.0.0
https://stackoverflow.com/questions/245916
复制相似问题