Para superar las diferencias en el formato de ifconfig Ubuntu16.04 y Ubuntu17.01

Para superar las diferencias en el formato de ifconfig Ubuntu16.04 y Ubuntu17.01

Fondo:

Estoy verificando la lista de interfaces disponibles en Linux usando el comando ifconfig.

Sin embargo, hay una diferencia en el formato de salida de ifconfig en ubuntu 16.04 y ubuntu 17.10.

Al verificar más a fondo, el paquete net-tools se actualizó (de net-tools 1.60 A net-tools 2.10-alpha) en ubuntu17.10 y el último ifconfig genera los nombres de las interfaces de red con dos puntos (':'). En una versión anterior:

$ ifconfig --versión net-tools 1.60 ifconfig 1.42 (2001-04-13)

$ifconfig

enp0s3 Encapsulación de enlace:Ethernet

En la versión más nueva

$ ifconfig --versión net-tools 2.10-alfa

$ifconfig

ens160: banderas = 4163 mtu 1500

lo: banderas = 73 mtu 65536

Esto puede dañar algunas herramientas que tienen en cuenta o esperan el ':' adicional en la salida.

Pregunta:

¿Hay alguna manera de obtener la lista de interfaces de red de manera confiable, de modo que cualquier cambio en el formato de salida de ifconfig no afecte a las herramientas que la utilizan? ¿Existe alguna alternativa para ifconfig que pueda usarse de manera consistente?

Respuesta1

Elherramientas de redel paquete eraobsoletodurante algún tiempo, siendo reemplazado por iproute2 ( ipsiendo la herramienta principal en ese paquete). Muchas distribuciones ya ni siquiera incluyen herramientas de red como parte de su instalación básica.

Desde entonces, el desarrollo de net-tools se ha reiniciado, pero esto ha resultado en que varias de las herramientas se hayan mejorado en formas que rompen la compatibilidad, como ha visto con ifconfig. Desde NEWS.Debian.gzun sistema Debian 9.0:

Después de 15 años sin desarrollo previo, se está trabajando nuevamente en net-tools, solucionando muchos problemas de larga data. La mala noticia es que la salida de muchos comandos ha cambiado y seguramente romperá los scripts que dependían de su análisis.

Por esa razón puede ser una idea adaptar tus scripts para usar las herramientas iproute2. Por ejemplo, ip linkdebería brindarle información similar a la ifconfiganterior. La única desventaja de este enfoque es que rompe la compatibilidad con sistemas que no son Linux, casi todos los cuales usan ifconfig.

Respuesta2

Una forma alternativa de enumerar todas las interfaces en Linux desde el shell es leer /proc/net/dev, que tiene un formato más estable que la salida de ifconfig(8) de net-tools.

Por ejemplo, para obtener el nombre de las interfaces:

whr@debianjessie:~$ sed -r -e 1,2d -e 's/^ +//' -e 's/: .+//' /proc/net/dev
ppp0
lo
eth0
eth1

información relacionada