%20mientras%20no%20se%20puede%20acceder%20a%20la%20red%3F.png)
Mi comando ping (en Debian 6 o 7) intentará repetidamente hacer ping a un servidor incluso cuando la red esté inactiva.sila red estaba activa cuando se inició. ¿Hay alguna manera de comenzar a hacer ping mientras la red está inactiva y obtener el mismo comportamiento?
He aquí un ejemplo. Si inicio un ping repetido mientras la red está activa y mientras el ping se está ejecutando, la red se cae, el ping continúa repitiéndose. Si la red vuelve a funcionar, seguirá haciendo ping:
me@here:~$ ping -n 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=46 time=117 ms
...
64 bytes from 8.8.8.8: icmp_req=6 ttl=46 time=116 ms
ping: sendmsg: Network is unreachable
...
ping: sendmsg: Network is unreachable
64 bytes from 8.8.8.8: icmp_req=108 ttl=46 time=694 ms
...
Sin embargo, si la red no funciona cuando ejecuto ping:
me@here:~$ ping -n 8.8.8.8
connect: Network is unreachable
me@here:~$
Este es el mismo problema de red inalcanzable, pero el ping no continúa hasta que la red vuelve a estar activa, como antes.
Respuesta1
Puedes usar un bucle while en un script de shell:
failed=1 # any number not equal to zero
while [ $failed -ne 0 ]
do
ping -n 8.8.8.8
failed=$?
done
# after the $? becomes "0" it will get out of the while loop
echo "ping succeeded"
Para dejar de seguir imprimiendo el connect: Network is unreachable
mensaje, puede editar la línea con ping de esta manera:
ping -n 8.8.8.8 2> /dev/null
O puede agregar un sleep
bucle para reducir la cantidad de esos mensajes.
El guión se puede simplificar a
while ! ping -n 8.8.8.8
do
sleep 1
done
Lo que permite escribirlo en una línea:
while ! ping -n 8.8.8.8; do sleep 1; done
Respuesta2
AFAICT, ping
no se ejecutará si no puede abrir un socket en una interfaz (porque la interfaz está inactiva). Si revisa sus dispositivos con ip link show
, verá qué dispositivos estánarribaoabajo.
Intente activar el dispositivo de red primero.
$ sudo ip link set <iface> up
$ ping -n 8.8.8.8
Probé esto en mi caja Arch Linux con unabajointerfaz wifi y unarribainterfaz virtual ethernet (sin dirección IP asignada). A ping
en el primero se cierra, mientras que el segundo ping
es continuo.
De lo contrario, utilice el script de shell del networker.
Respuesta3
Puedes usarlo fping
con sus opciones -l
y , en lugar de . Esto requiere conocer el nombre de la interfaz y ejecutarla como root:-I
ping
root@here:~# fping -l -I wlan0 -n 8.8.8.8
me@here:~$ sudo fping -l -I eth0 -n 8.8.8.8