En Ubuntu, con el comando ifconfig -a
, obtengo toda la información sobre mis interfaces ethernet / wifi.
Pero necesito obtener como salida solo la dirección MAC, como:
ab:cd:ef:12:34:56
57:89:12:34:ac:23
12:34:56:ab:cd:ef
¿Cómo puedo obtener esto?
command-line
networking
simone_s1994
fuente
fuente
LANG=C ifconfig -a
lugar deifconfig -a
instalaciones que no estén en inglés, puede haber problemas con grep. (es decir, en mi sistema,HWaddr
esdirecciónHW
)ifconfig -a | grep -i hw-*
:?-*
supone que eso significa algo?HW
pero dijoHWaddr
y en español como supongo / veo,direcciónHW
así que simplementeHW
puede ser;)grep
"es altamente experimental". Si desea utilizar expresiones regulares básicas, el comando es equivalenteifconfig -a | grep -o 'HWaddr [[:xdigit:]:]*'
o, si lo prefiere,ifconfig -a | grep -o 'HWaddr [a-f0-9:]*'
. He omitido el final$
porque la salida incluye espacios después de la dirección MAC, y probablemente no quieras esos.Puede acceder al
address
archivo para cada dispositivo en el/sys
sistema de archivos virtual. La dirección MAC debe estar en/sys/class/net/<device-name>/address
:Para todos los dispositivos:
fuente
ip
también ha existido durante años.Aquí hay algunas maneras:
grep
. Hay varias expresiones regulares que las recogerán. Aquí, estoy buscando 5 repeticiones de 2 letras o números seguidos de dos puntos, luego dos caracteres. Esto-i
hace que las mayúsculas y minúsculas no-o
sean sensibles y lasgrep
impresiones solo imprimen la parte coincidente.-E
habilita expresiones regulares extendidas. La misma expresión regular también funciona con PCRE (-P
).sed
. El-n
suprime la producción normal y la-r
permite expresiones regulares extendidas. Usando la misma expresión regular anterior, esta secuencia de comandos intentará reemplazar todo en la línea con la parte que coincida con la expresión regular. Si la sustitución fue exitosa, se imprime la línea resultante (debidop
al final de la sustitución).awk
. Si la línea comienza con un carácter de palabra ([a-zA-Z0-9_]
) y tiene 5 campos, imprima el último.Perl, donde, como siempre, hay más de una forma de hacerlo. Esta es la misma lógica que la
awk
anterior. El-a
le dice a Perl que divida cada línea de entrada en la@F
matriz.Alternativamente, puede usar la expresión regular de los enfoques anteriores:
Coreutils.
fuente
Como algunos han comentado,
ifconfig
está en desuso a favor delip
comando. Entonces, combinando las diversas soluciones y comentarios, usaría:fuente
ifconfig -a | grep HWaddr | awk '{print $5}'
Si el resultado de su sistema no es inglés en este comando, entonces tiene sentido ejecutarlo de esta manera.
LANG=C ifconfig -a | grep HWaddr | awk '{print $5}'
Esto es aplicable a todas las soluciones.
fuente
grep
separado, puede filtrarawk
directamente de esta manera:ifconfig -a | awk '/HWaddr/ { print $5 }'
LANG=C ifconfig -a
lugar deifconfig -a
instalaciones que no estén en inglés, puede haber problemas con grep. (es decir, en mi sistema,HWaddr
esdirecciónHW
)@Helio
al comienzo del comentario. Si no, no seré notificado.