Is there a more efficient way to retrieve the MAC address of a NIC in Linux?

This works:

ip link show dev eth0 | awk ' /link\/ether/ { print $2 }'

but can it be found via something like:

cat /sys/net/something
link|improve this question
feedback

3 Answers

up vote 25 down vote accepted

It's at /sys/class/net/eth0/address (or more precisely /sys/devices/pciXXXX:XX/XXXX/net/eth0/address where the XXX is your PCI bus ID, but this varies between systems).

(Incidentally, I found this with find /sys -name eth0 and looking at the files in the directories identified.)

link|improve this answer
feedback

It's also available via ifconfig:

kce@thinkpad:~$ /sbin/ifconfig eth0 |grep HWaddr
eth0      Link encap:Ethernet  HWaddr 00:1e:37:cc:ce:cc  

Or if you want just the MAC address:

kce@thinkpad:~$ /sbin/ifconfig eth0 |awk '/HWaddr/{print $5}'
00:1e:37:cc:ce:cc
link|improve this answer
2  
Well, you still have to awk or cut it. Because the mac is at the end of line. – brodul Sep 5 '11 at 18:58
feedback

if you can install moreutils package, there is a ifdata tool. Description says:

ifdata: get network interface info without parsing ifconfig output

Here's an example:

me@box:~$ ifdata -ph eth0
00:21:86:61:35:44
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.