Necesito verificar con un script, si eth0
está configurado. Si es así, el guión no hará nada. De lo contrario, comenzará wlan0
. (No quiero ambos eth0
y wlan0
estar despierto al mismo tiempo).
¿Cuál sería la forma más fácil de verificar si eth0
ya está funcionando?
Estoy usando Debian Wheezy
ACLARACIÓN:
Me gustaría comprobar no solo que el cable eth0
está enchufado, sino que la interfaz está configurada (es decir, tiene un conjunto de IP estático o ha recibido un IP de DHCP). Si el cable está enchufado, pero eth0
no está configurado correctamente, quiero comenzarwlan0
linux
networking
usuario1968963
fuente
fuente
cat /sys/class/net/ | grep eth0
debería darle datos fácilmente analizables. También podría hacerlosudo ethtool eth0 | grep Link
Respuestas:
Puedes hacerlo de muchas maneras. Aquí un ejemplo:
fuente
/sys/class/net/eth0/carrier
, para comprobar si hay una señal, pero todavía no puede tener una concesión DHCP sin embargo, etcSi no se muestra nada, entonces su interfaz está inactiva
fuente
Así que aquí tenemos
grep
lasip
herramientas ubicuasstdout
para una línea que contiene tanto nuestra interfaz de interés como la frase "estado ARRIBA" (gracias a @Lekensteyn por señalar la necesidad de un poco más de especificidad que simplementeUP
). Usamos el argumentoa
como forma abreviadaaddress
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 realmente debería estar disponible en todas partes; es cómo configuro comúnmente los dispositivos de red de mi teléfono Android, por ejemplo.Se
:colons
utilizan para evitar coincidencias parciales, de esta manera garantizamos una coincidencia eneth0
lugar de una posiblesomeothereth0
o noeth007
.Gracias @RaphaelAhrens por empujarme hacia la corrección y explicar mi solución.
EDITAR:
Para manejar los requisitos actuales puede:
Lo anterior solo imprimirá una dirección IP CIDR si su objetivo
$if
está ARRIBA, enchufado y tiene una. Para ipv6, la solución es igual de simple con solo modificaciones menores.Si no le gusta
sed
, podría lograr resultados similares con otro|pipe ... grep
y agregar una-A
opción de contexto a la primeragrep
, pero me gustased
.fuente
UP
si el dispositivo está levantado, pero no hay un cable conectado es:2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. También puede especificar el dispositivo para evitar falsos positivos:ip addr show dev eth0
.Los otros métodos no funcionan, pero este sí (al menos en Ubuntu):
fuente
ip route
el que lidiar en Debian Stretch.