GNU/Linux >> Tutoriales Linux >  >> Linux

compruebe si la interfaz eth0 está activa (configurada)

Puedes hacerlo de muchas maneras. Aquí un ejemplo:

$ cat /sys/class/net/eth0/operstate
up

ip a show ethX up

Si no se muestra nada, entonces su interfaz está inactiva


ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing 

Así que aquí tenemos grep el omnipresente ip herramienta stdout para una línea que contiene nuestra interfaz de interés y la frase "state UP" (gracias a @Lekensteyn por señalar la necesidad de un poco más de especificidad que solo UP ). Usamos el argumento a como la forma abreviada de address y eso debería ser suficiente para obtener una lista de todas las tarjetas de red configuradas en el sistema.

Una ventaja de usar ip podría ser que debería estar disponible en todas partes; por ejemplo, así es como configuro los dispositivos de red de mi teléfono Android.

El :colons se utilizan para evitar coincidencias parciales; de esta forma, garantizamos una coincidencia para eth0 a diferencia de un posible someothereth0 o eth007 .

Gracias @RaphaelAhrens por empujarme hacia la corrección y explicar mi solución.

EDITAR:

Para manejar los requisitos actuales, podría:

ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'

Lo anterior solo imprimirá una dirección IP CIDR si su objetivo $if es ARRIBA, enchufado, y tiene uno. Para ipv6, la solución es igual de simple con solo una pequeña modificación.

Si no te gusta sed podría lograr resultados similares con otro |pipe ... grep y añadiendo un -A opción de contexto al primer grep - pero me gusta sed .


Linux
  1. Linux:¿por qué la interfaz Ethernet se llama Enp0s10 en lugar de Eth0?

  2. Grep -v ¿Comportamiento inesperado?

  3. Comando de Linux para verificar si un script de shell se está ejecutando o no

  4. cómo usar cURL en una interfaz específica

  5. ¿Configurar un servidor DNS por interfaz nic (eth0/eth1)?

Grep Regex:una guía completa

Cómo excluir en Grep

Cómo cambiar el nombre de la interfaz de red a eth0 en CentOS 8/RHEL 8

Cambie el nombre de red predeterminado (ens33) a eth0 en Debian 10/Debian 9

¿Por qué mi interfaz ethernet se llama enp0s10 en lugar de eth0?

Compruebe el Número de conexiones activas en el puerto 80?