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

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.)


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}'
  • 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

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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