Hace aproximadamente un mes que tengo el ADSL nuevo (20mbps).
La verdad es que me funciona de maravilla y estoy bastante contento, pero tenía una pega, de vez en cuando, la conexión pasaba a mejor vida y me tocaba resetear el router.
Evidentemente, si me pasaba estando en el ordenador, pues no pasaba nada, reinicio y listos. El problema lo tenía cuando pasaba y no estaba en casa. Cuando llegaba por la tarde... sorpresa, no ha descargado ni un poquito de las cosas que tenia programadas...
Bueno, otra de las ventajas de linux es CRON y todas las utilidades que tiene de serie en el SHELL, así que... me he hecho un rudimentario script que comprueba la conexión a internet y de paso, la velocidad de descarga. Si no hay conexión o la velocidad a la que está sincronizado es demasiado baja (he definido el limite en 5000kbps), resetea el router.
El script lo he programado en CRON cada 10 minutos y... funciona!
Evidentemente, el script es para mi modelo de router, un HUAWEI chapucero, pero que es IDÉNTICO a muchos otros clones del COMTREND 536+, así que con unos mínimos retoques deberiais poder adaptar el script para vuestro aparato.
Aquí el script (con comentarios añadidos):
Espero que os sirva de ayuda a alguien. Por supuesto el script es completamente libre, podéis hacer lo que os dé la gana con él, incluso venderlo si luego me invitaís a una cerveza.
*reemplazar t td por td... porquería HTML
La verdad es que me funciona de maravilla y estoy bastante contento, pero tenía una pega, de vez en cuando, la conexión pasaba a mejor vida y me tocaba resetear el router.
Evidentemente, si me pasaba estando en el ordenador, pues no pasaba nada, reinicio y listos. El problema lo tenía cuando pasaba y no estaba en casa. Cuando llegaba por la tarde... sorpresa, no ha descargado ni un poquito de las cosas que tenia programadas...
Bueno, otra de las ventajas de linux es CRON y todas las utilidades que tiene de serie en el SHELL, así que... me he hecho un rudimentario script que comprueba la conexión a internet y de paso, la velocidad de descarga. Si no hay conexión o la velocidad a la que está sincronizado es demasiado baja (he definido el limite en 5000kbps), resetea el router.
El script lo he programado en CRON cada 10 minutos y... funciona!
Evidentemente, el script es para mi modelo de router, un HUAWEI chapucero, pero que es IDÉNTICO a muchos otros clones del COMTREND 536+, así que con unos mínimos retoques deberiais poder adaptar el script para vuestro aparato.
Aquí el script (con comentarios añadidos):
#!/bin/sh
fecha=`date +%d/%m/%Y\ %H:%M:%S`
log=/LOG/`date +%Y%m%d.log` # el directorio de LOG tiene que tener permisos de escritura para el usuario que lance el script
limite=5000 # limite minimo de velocidad que aceptaremos como buena
echo $fecha - Comprobando conexión a Internet >> $log
ping -c 3 www.google.com > /dev/null
resultado=$?
if [ $resultado = 0 ]; then
fecha=`date +%d/%m/%Y\ %H:%M:%S`
echo $fecha - Conexión a Internet CORRECTA >> $log
wget http://admin:password@192.168.1.1/info.html 2> /dev/null # sacamos la info del router, adaptar al router
up=`head -n54 info.html | tail -n1 | sed s/' '//g | sed s/'<t td>'//g | sed s/'<\/td>'//g` # velocidad de subida (adaptar)
down=`head -n58 info.html | tail -n1 | sed s/' '//g | sed s/'<t td>'//g | sed s/'<\/td>'//g` # velocidad de bajada (adaptar)
fecha=`date +%d/%m/%Y\ %H:%M:%S`
echo $fecha - La velocidad actual es: UP:\<$up\> DOWN:\<$down\> >> $log
if [ $down -lt $limite ]; then
echo $fecha - Velocidad de bajada inferior a $limite. Reseteando >> $log
wget http://admin:password@192.168.1.1/rebootinfo.cgi 2> /dev/null # pagina del router que lo reinicia (adaptar)
fecha=`date +%d/%m/%Y\ %H:%M:%S`
echo $fecha - Reseteo OK >> $log
fi
rm info.html
else
fecha=`date +%d/%m/%Y\ %H:%M:%S`
echo $fecha - Conexión a Internet FALLIDA >> $log
echo $fecha - Intentando resetear el router >> $log
wget http://admin:password@192.168.1.1/rebootinfo.cgi 2> /dev/null # pagina del router que lo reinicia (adaptar)
fecha=`date +%d/%m/%Y\ %H:%M:%S`
echo $fecha - Reseteo OK >> $log
fi
Espero que os sirva de ayuda a alguien. Por supuesto el script es completamente libre, podéis hacer lo que os dé la gana con él, incluso venderlo si luego me invitaís a una cerveza.
*reemplazar t td por td... porquería HTML
Justo lo que necesitaba!!!
ResponderEliminarEres un crack tio!!
Voy a probar y te comento.
Por si te sirve, mi router no es un Huawey, pero sí un comtrend.
Gracias!
Hola de nuevo, ya he probado el script y he tenido que hacer unos cambios para mi Mandriva: (por si interesase)
ResponderEliminar#!/bin/sh
fecha=$(date +%d/%m/%Y\ %H:%M:%S)
log=/tmp/$(date +%Y%m%d.log) # el directorio de LOG tiene que tener permisos de escritura para el usuario que lance el script
touch $log # creo el fichero par que no me de error
limite=800 # limite minimo de velocidad que aceptaremos como buena
echo $fecha - Comprobando conexión a Internet >> $log
ping -c 3 www.google.com > /dev/null
resultado=$?
if [ $resultado = 0 ]; then
fecha=$(date +%d/%m/%Y\ %H:%M:%S)
echo $fecha - Conexión a Internet CORRECTA >> $log
wget http://root:tupassword@10.10.10.100/info.html 2> /dev/null # sacamos la info del router, adaptar al router
up=$(head -n67 info.html | tail -n1 | sed s/' '//g | sed s/'document.write("< td>'//g | sed s/'<\/td>");'//g) # velocidad de subida (adaptar)
down=$(head -n71 info.html | tail -n1 | sed s/' '//g | sed s/'document.write("< td>'//g | sed s/'<\/td>");'//g) # velocidad de bajada (adaptar)
fecha=$(date +%d/%m/%Y\ %H:%M:%S)
echo $fecha - La velocidad actual es: UP:\<$up\> DOWN:\<$down\> >> $log
if [ $down -lt $limite ]; then
echo $fecha - Velocidad de bajada inferior a $limite. Reseteando >> $log
wget http://root:tupassword@10.10.10.100/rebootinfo.cgi 2> /dev/null # pagina del router que lo reinicia (adaptar)
fecha=$(date +%d/%m/%Y\ %H:%M:%S)
echo $fecha - Reseteo OK >> $log
fi
rm info.html
else
fecha=$(date +%d/%m/%Y\ %H:%M:%S)
echo $fecha - Conexión a Internet FALLIDA >> $log
echo $fecha - Intentando resetear el router >> $log
wget http://root:tupassword@10.10.10.100/rebootinfo.cgi 2> /dev/null # pagina del router que lo reinicia (adaptar)
fecha=&(date +%d/%m/%Y\ %H:%M:%S)
echo $fecha - Reseteo OK >> $log
fi
Mi firmware del router es:
A111-306FPT-C01_R02
En donde pone < td> hay que sustituirlo por el <, td y > sin el espacio que tiene, no se permiten los tds en el comentario :P
El usuario en este caso es root en vez de admin pero por lo demás perfecto!!!