La meilleure solution spécifique à Linux consiste à utiliser sysfs :
$ IFACE=eth0
$ read MAC </sys/class/net/$IFACE/address
$ echo $IFACE $MAC
eth0 00:ab:cd:12:34:56
Cette méthode est extrêmement propre par rapport aux autres et ne génère aucun processus supplémentaire depuis read
est une commande intégrée pour les shells POSIX, y compris les shells non BASH. Cependant, si vous avez besoin de portabilité vers OS X, vous devrez utiliser ifconfig
et sed
méthodes, car OS X n'a pas d'interface de système de fichiers virtuel comme sysfs.
Vous pouvez faire comme suit
ifconfig <Interface ex:eth0,eth1> | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
Vous pouvez également obtenir MAC pour toutes les interfaces comme suit
cat /sys/class/net/*/address
Pour une interface particulière comme pour eth0
cat /sys/class/net/eth0/address