Nejlepším řešením specifickým pro Linux je použití sysfs:
$ IFACE=eth0
$ read MAC </sys/class/net/$IFACE/address
$ echo $IFACE $MAC
eth0 00:ab:cd:12:34:56
Tato metoda je extrémně čistá ve srovnání s ostatními a nevytváří žádné další procesy od read
je vestavěný příkaz pro shelly POSIX, včetně shellů bez BASH. Pokud však potřebujete přenositelnost na OS X, budete muset použít ifconfig
a sed
metod, protože OS X nemá rozhraní virtuálního souborového systému jako sysfs.
Můžete to udělat následovně
ifconfig <Interface ex:eth0,eth1> | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
Také můžete získat MAC pro všechna rozhraní následovně
cat /sys/class/net/*/address
Pro konkrétní rozhraní jako pro eth0
cat /sys/class/net/eth0/address