El Jueves, 10 de Junio de 2004 17:30, Fernando Barcel� escribi�:
> Ultimamente ciudad internet anda para el diablo, al menos en la zona en
> la que yo estoy, mantiene la conecci�n pero se empiezan a disparar los
> tiempos de latencia de una forma impresionante (llegu� a tener 2556 en
> un ping a yahoo) y la �nica soluci�n es reconectar.
>
> como en casa tengo varias m�quinas, una usada por mis padres y otras por
> mi hermano en winkk y reciben inet via NAT desde mi m�quina me vi
> obligado a automatizar la cuesti�n para evitar que a cada rato me llamen
> para preguntar por que no anda.
>
> as� que empec� a armar el siguiente script (Esto en realidad lo hab�a
> hecho hace tiempo pero luego el problema se solucion� y lo dej� ah�,
> ahora volvi� y aqu� estoy )
>
> #!/bin/bash
> latencia=`ping -c 4 www.yahoo.com | grep min/avg/max | awk '$4'| awk -F
> / '{print $4}'`
> echo "El tiempo de latencia es" $latencia
> if [ $latencia > 500 ];
> then
> echo la latencia es muy alta, voy a reconectar
> # reconecta
> else echo La latencia esta bien, mantengo la conexi�n
> fi
>
>
> El script detecta correctamente los tiempos de latencia, el problema es
> que el if es completamente ignorado, sea cu�l sea el valor de $latencia
> sale por la reconecci�n.
>
> �alguno puede darme una manito con esto?
>
> Seguramente es alguna cuesti�n de sint�xis que no llego a ver.
>
Esto rula. Las comparaciones de enteros son con -gt -lt -eq. El ultimo sed es
para limpiar el punto y los decimales. Fijate que puedes considerar todo
separado por / y ahorrar un awk.
latencia=`ping -c 4 www.yahoo.com | grep min/avg/max | awk -F/ '{print $5}' |
sed 's/\..*//'`
if [ "$latencia" -gt 500 ]; then
echo la latencia es muy alta, voy a reconectar
# reconecta
else
echo La latencia esta bien, mantengo la conexi�n
fi
Si va por cron deberias quitar la salida en el caso de que valla bien, ya que
si no te lo mandara por correo.