Maneira fácil de obter o endereço MAC da placa de rede

4

Eu uso muitos scripts que envolvem os endereços Mac das minhas placas de rede. Existe um arquivo que eu possa ler ou um comando que eu possa usar para APENAS obter o endereço do Mac? Não quero cabeçalhos nem nada, apenas uma linha de saída com o endereço Mac. Gostaria de definir isso como uma variável de ambiente no login. Eu uso o Arch Linux x64

Wolfizen
fonte
Qualquer que seja o comando que você normalmente usa para ver o endereço MAC, canalize sua saída através awk(ou perl ou ...) e retire o bit que desejar.
alexis
Esteja ciente de que o endereço MAC não é um valor estático e imutável. Em praticamente todos os lugares é configurável / mutável pelo usuário.
Mdpc

Respostas:

8
 VARIABLE="$(cat /sys/class/net/$IFACE/address)"

É difícil fazê-lo mais simples.

Bem, na verdade:

 read -r MACADDRESS < /sys/class/net/$iFACE/address

é ainda mais simples e não inicia nenhum processo adicional.

BatchyX
fonte
VARIABLE=`cat /sys/class/net/$IFACE/address`também funciona.
haccks
Eu sabia que tinha que haver uma maneira mais graciosa do que usar sed ip link show dev $iface. Bem feito.
Bruno Bruno #
0

Isso funciona para mim. Provavelmente pode ser otimizado um pouco:

/sbin/ifconfig eth0 | grep -o 'HWaddr  *[0-9A-F:]*' | sed -s 's/HWaddr *//'

Eu não acho que você pode simplificar muito isso. Eu fiz um straceno ifconfig, e parece que você puxa o endereço MAC com um ioctl () em um soquete, não em um arquivo / proc.

Rich Homolka
fonte
3
ifconfigfoi descontinuado no Linux, a favor de ip, o que é tão facilmente analisável:ip link show dev eth0 | sed -nre 's@.*link\/ether (\S+).*@\1@p'
BatchyX 31/01
Você já descobriu uma maneira de fazer isso sem expressões regulares?
Ben Ben