将Mac地址打印到文件


Answers:


15

ifconfig 将输出有关您的接口的信息,包括MAC地址:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:11:22:33:44:55  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:289748093 errors:0 dropped:0 overruns:0 frame:0
          TX packets:232688719 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3264330708 (3.0 GiB)  TX bytes:4137701627 (3.8 GiB)
          Interrupt:17 

HWaddr是你想要的,所以你可以使用awk过滤它:

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}'
00:11:22:33:44:55

将其重定向到文件中:

$ ifconfig eth0 | awk '/HWaddr/ {print $NF}' > filename

2
您还可以使用ip命令:/sbin/ip link show eth0
基思

2
@Michael无论如何,在Linux上,它是首选工具。实际上,您必须使用它来配置一些高级功能。但是ifconfig仍然存在...
Keith

3
国际方法是LC_ALL=C ifconfig eth0 | awk '/HWaddr/ {print $NF}',因为输出可能是本地化的,不匹配“ HWaddr”。LC_ALL = C使用国际标准。
用户未知,

2
@用户啊,太酷了。据我所知,它永远是第一线,所以你可以只逃脱awk '{print $NF; exit}'太多
迈克尔Mrozek

1
是的,如果您是AWK型的。我是sed类型,但在这里希望使用| head -n 1then。
用户未知,

8

这是现代的Linux方法:

ip -o link show dev eth0 | grep -Po 'ether \K[^ ]*'

这是现代在ifconfig已经长期被否决有利于ipiproute2包装,并grep具有-P针对Perl的正则表达式选项零宽度正向后看断言

grep -o非常适合文本提取。sed通常用于此目的,但我发现perl样式的零宽度断言比sed替换命令更清晰。

实际上,您实际上不需要-o(oneline)选项ip,但是我更喜欢在提取网络信息时使用它,因为我发现它更干净,每行只有一条记录。如果您要进行更复杂的匹配或提取(通常使用awk),-o这对于干净的脚本是必不可少的,因此,为了保持一致性和通用模式,我总是使用它。


1
@michelemarcon:这不使用perl。它使用最新的GNU grep,并且grep具有使用perl样式正则表达式的选项。
camh 2011年

我有busybox grep,但是感谢您的澄清。+1
michelemarcon 2011年

5
#! /bin/sh

/sbin/ifconfig eth0 | perl -ne 'print "$1\n" if /HWaddr\s+(\S+)/' >file

当然,还有其他工具可以将MAC地址从ifconfig输出中切出。我只是喜欢Perl。


1
我的系统上没有perl ... :(但是,+1
michelemarcon 2011年

0

使用ip -br link show eth0将打印如下内容:

$ ip -br link show eth0 
eth0             UP             85:e2:62:9c:b2:02 <BROADCAST,MULTICAST,UP,LOWER_UP>

您只需要第三列,因此:

$ ip -br link show eth0 | awk '{ print $3 }'
85:e2:62:9c:b2:02
$ ip -br link show eth0 | awk '{ print $3 }' > file
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.