Получить имя сетевого интерфейса и MAC-адрес в командной строке

Должно быть то же самое, но glibc ghost vuln исправленные RPM находятся только в репо платной версии поддержки LTSS. Стандартное репо обновлений SLES 10 SP4 закончило поддержку.

3
17.08.2019, 13:06
5 ответов

Si está en Ubuntu, puede obtener la dirección MAC de/sys/class/net/<dev>/address:

$ cat /sys/class/net/enp0s3/address
08:00:27:15:dc:fd

Entonces, algo así como:

find /sys/class/net -mindepth 1 -maxdepth 1 ! -name lo -printf "%P: " -execdir cat {}/address \;

me da:

enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33

O, usando el modo de una línea -de ip, que es conveniente para secuencias de comandos:

$ ip -o link | awk '$2 != "lo:" {print $2, $(NF-2)}'
enp0s3: 08:00:27:15:dc:fd
docker0: 02:42:61:cb:85:33
23
27.01.2020, 21:09

Hice un truco feo de una sola línea:

 ip link | awk -F' ' '{print $2 $17}' | paste -d " "  - - | grep -v lo:

Si cuenta los campos usando espacios como separadores, verá que los campos que necesita son el 2 y el 17.

Pero se imprimirán uno debajo del otro, la pasta coloca las líneas adyacentes como columnas. La corrección de pegado que coloca líneas adyacentes una al lado de la otra en una línea. No pude encontrar una forma inteligente de evitar obtener la línea lo, así que la excluí antes de imprimir con grep

Probando aquí:

ip link | awk -F' ' '{print $2 $17}' | paste -d " "  - - | grep -v lo:
enp2s0: 50:9a:4c:b5:af:ea
wlp3s0: e8:9e:b4:66:e3:ea
2
27.01.2020, 21:09

Uso de enlace IP

ip -o link | grep ether | awk '{ print $2" : "$17 }'
  • donde -oda el resultado de la línea -para cada interfaz.
  • grep etherfiltra solo aquellas interfaces que tienen asignada una dirección Ethernet.
  • Y awksimplemente imprime la columna 2 y 17 de las líneas con dos puntos en el medio.

O

ip -br link | grep -v LOOPBACK | awk '{ print $1 " : " $3 }'

donde

  • -brda la información briefde las interfaces.
  • grep -v LOOPBACKignora la palabra LOOPBACKque está presente solo en la interfaz lo.
  • y awkimprime la primera y la tercera columna.

Usando ifconfig

ifconfig | grep HW | awk '{ print $1" : "$5 }'

donde grep HWfiltra solo aquellas interfaces que tienen asignada una dirección de hardware.

El truco

grep HWo grep etheren realidad ignora el loporque

Loopback interface that doesn't have a HW Address assigned to it.

5
27.01.2020, 21:09

[Быстрый ответ]:

Подход к получению MAC-адреса без знания имени интерфейса:

cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address

Следующая команда возвращает имя интерфейса:

ip route show default | awk '/default/ {print $5}'
1
27.01.2020, 21:09

Без аргументов xargs заменит все символы новой строки, табуляции и множественные пробелы на один пробел. Добавляя-n 2 , он будет нарезать эту строку после каждого второго слова. Так:

ip link | awk '{print $2}' | xargs -n 2
3
27.01.2020, 21:09

Теги

Похожие вопросы