Se eu executar o comando
ip link | awk '{print $2}'
no Ubuntu 18.04, recebo esta saída:
lo:
00:00:00:00:00:00
wlp1s0:
2c:6e:85:bf:01:00
enp2s0:
14:18:77:a3:01:02
Eu quero formatado assim (sem lo
)
wlp1s0: 2c:6e:85:bf:01:00
enp2s0: 14:18:77:a3:01:02
Como eu faço isso?
Você pode obter o endereço MAC de
/sys/class/net/<dev>/address
:Então, algo como:
Dá-me:
Ou, usando
ip
o modo de uma linha de, que é conveniente para scripts:Usando link ip
-o
dá resultado on-line para cada interface.grep ether
filtra apenas as interfaces que têm um endereço Ethernet atribuído a ela.awk
simplesmente imprime a 2ª e 17ª colunas das linhas com dois pontos entre elas.OU
Onde
-br
fornece asbrief
informações das interfaces.grep -v LOOPBACK
ignora a palavraLOOPBACK
que está presente apenas nalo
interface.awk
imprime a primeira e a terceira coluna.Usando ifconfig
onde
grep HW
filtra apenas as interfaces que possuem um endereço de hardware atribuído a ela.o hack
grep HW
ougrep ether
realmente ignora olo
porqueSem argumentos , xargs substituirá todas as novas linhas, tabulações e vários espaços em um único espaço. Ao adicionar -n 2 , ele cortará essa linha após cada segunda palavra. Então:
Eu fiz um forro hacky feio:
Se você contar os campos usando espaços como separadores, verá que os campos necessários são o 2º e o 17º.
Mas eles serão impressos um sob o outro, a pasta coloca as linhas adjacentes como colunas. A pasta corrige isso colocando linhas adjacentes lado a lado em uma linha. Não consegui encontrar uma maneira inteligente de evitar a linha lo, então apenas a excluí antes de imprimir com grep
Testando aqui:
[Resposta rápida]:
Uma abordagem para obter o endereço MAC sem saber o nome da interface:
O seguinte comando retorna o nome da interface:
para todos os dispositivos
Há também um esquema de nomenclatura para dispositivos de rede, por exemplo aqui https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_predictable_network_interface_device_names .
Portanto, pode-se usar apenas
cat /sys/class/net/en*/address
para imprimir MAC(s) de NIC(s) ethernet.OVH Ubuntu 18