Tengo un problema con mi router ADSL de casa. Cada 3 o 4 días se cuelga por alguna extraña razón (¿será saturación? 😛 ) y hay que resetearlo para que vuelva a funcionar. Cansado de estos cuelgues decidí solucionarlo con un pequeño script que mi máquina Linux ejecuta cada dos días de madrugada, así no me entero. Ya no me he vuelto a dar cuenta de los cuelges.
Lo primero que hay que hacer es habilitar el acceso telnet al router desde dentro de la red local, nunca desde el exterior 😛 .
expect es una herramienta que permite automatizar aplicaciones interactivas tipo telnet o ftp, donde tienes que introducir tu usuario y tu clave y alguien tiene que estar ahí para teclearlas. Expect lo que hace es, como su propio nombre indica, esperar determinadas cadenas de texto e introducir los datos que se hayan programado. Pongamos un ejemplo práctico. Cuando haces un telnet tienes la siguiente secuencia de eventos:
[osus@servidor ~]# telnet 192.168.0.100 Trying 192.168.0.100... Connected to 192.168.0.100. Escape character is '^]'. Username: Password:
Es decir, cuando haces un telnet “esperas” la cadena “Username:” para introducir tu usuario y después introduces tu clave cuando recibes “Password:“.
Esto es exactamente lo que automatiza expect. Veamos cómo con un script práctico.
[osus@servidor scripts]# cat router.sh #!/usr/bin/expect -f set force_conservative 1 ; if {$force_conservative} { set send_slow {1 .010} proc send {ignore arg} { sleep .2 exp_send -s -- $arg } } spawn telnet 192.168.0.100 expect "Username :*" send -- "USUARIOr" expect "Password :*" send -- "CLAVEr" expect "ROOT :>*" send -- "rebootr" expect "figuration(y/n) ? :*" send -- "yr" expect -gl "\[*]$*" exit
Creo que habla por sí sólo el script. Esperamos a recibir cada cadena de texto para enviarle nuestros datos. Una vez estamos logueados esperamos la cadena inicial que nos devuelve el router, en mim caso “ROOT :>“. Ahí es cuando le pedimos el reboot y lo confirmamos. Ya está, el router se reinicia sólo. Obviamente todas las cadenas que esperas recibir deben coincidir con las de tu router, las aquí indico son las del mío.
Claro que es saturación, los routers se cuelgan porque no pueden almacenar la tabla de rutas y conexiones.. dentro de su memoria, siempre hay modelos mejores (Netgear) por ejemplo esta bien.
Pero si quieres que la ADSL vuele de verdad configura el router como brigde y usa tu linux como cliente pppd
sls.