Tip Consola: Shell Script para reiniciar el router

A muchos de nosotr@s nos interesa reiniciar el router inalambrico para por ejemplo obtener una IP dinamica diferente. La forma habitual es levantarnos del sitio, acercarnos al router y darle un «botonazo», pero claro, esto nos obliga fisicamente estar en el sitio. En muchos routers existe la posibilidad de hacer lo mismo mediante la consola de comandos. Basicamente serian los siguiente pasos:

1. Hacer un telnet a la direccion del router.

2. Introducir el usuario y la password de acceso al router.

3. Ejecutar el comando de reboot del router.

Ejemplo:

$ telnet 192.168.1.1
$ Login:
PERICO
$ Password:
EL_DE_LOS_PALOTES
Login succesful
-->
reboot

Naturalmente tendras que usar el login y password de tu router (el que viene de fabrica, o el que hayas puesto si ya lo has cambiado). El comando para reiniciar el router en mi caso es «reboot» y la lista de comandos posibles me salen cuando introduzco «?» desde la ventana de telnet. En tu caso, si el comando no es este, debera ser muy parecido.

Veamos como automatizar ahora, el reboot de el router mediante un shell script.
Para automatizar la ejecucion del shell script y no tener que pasarle a mano el usuario y la password, sino que me las lea desde la consola yo he usado «expect».
expect es un interprete de comandos que nos permite automatizar secuencias de acciones, de esta manera podemos evitar el tener que introducir comandos, solo lo hacemos la primera vez y el resto de veces se ejecuta ya lo que hubieramos realizado (de expect ya hable aunque por desgracia no tengo el tutorial a mano). Podeis encontrar mas informacion aqui.

Para instalar expect ejecutamos:

$ sudo apt-get install expect

Si instalamos tambien autoexpect. Podriamos ejecutarlo directamentes:

$ chmod +x ./autoexpect
$ ./autoexpect

Grabar la secuencia de comandos que queremos automatizar, y para finalizar escribir «exit». De esta manera se genera un fichero expect de comandos de manera automatica que luego podriamos ejecutar cuando quisieramos.

Para reiniciar el router, en mi caso uso el siguiente script de expect:

#!/usr/bin/expect
spawn telnet [lindex $argv 0]
expect "Login:"
send [lindex $argv 1]
send "\r"
expect "Password:"
send [lindex $argv 2]
send "\r"
expect -exact "\r
\r
Login successful\r
\r
--> "
send "reboot"
send "\r"
sleep 1
interact
exit

Como veis, realmente hago un telnet a la ip del router que paso como parametro, espero por la cadena «Login:» y le paso el login, espero por la cadena «Password» y le paso el password, espero por la cadena «–>» que es la que me indica que ya puedo escribir el comando en mi router, y para acabar le paso la cadena «reboot» que es el comando que quiero ejecutar, y finalizo.

Guardo este script como reboot_router.sh
y ya podria ejecutarlo siempre que quisiera:

$ chmod +x ./reboot_router.sh
$ ./reboot_router.sh 192.168.1.1 PERICO EL_DE_LOS_PALOTES

Tras unos segundos, el router se reinicia y ya tengo nueva IP. chachi!! ^^

En vuestro caso, si el script no es identico debe ser bastante parecido. En el siguiente enlace encontrareis mas informacion:

Enlace | Linux Shell Script to reboot DSL or ADSL router

12 Respuestas to “Tip Consola: Shell Script para reiniciar el router”


  1. 1 superpiwi junio 1, 2008 a las 11:45 am

    Si haceis COPY & PASTE del script, cuidado con las dobles comillas, que wordpress las pone mal y entonces el script os dara error al intentar ejecutarlo.

  2. 2 t.a.c. junio 1, 2008 a las 2:50 pm

    Muy bueno lo del telnet. No lo sabía.

    Gracias y un saludo

  3. 3 carnitos junio 2, 2008 a las 6:31 am

    No sabia que podia entrar a mi router a traves de telnet. Muchas gracias 🙂

  4. 4 fede enero 18, 2009 a las 1:24 am

    Pero esto no es válido para todos los routers.

  5. 6 Ricardo enero 27, 2010 a las 10:30 am

    Es muy interesante este tema pero tnego dos dudas:

    1) Esta función trabajaría igual tanto para windows
    como para linux.

    2) Yo necesito trabajar con windows alguien me puede
    pasar un enlace donde descargar expect.

    Muchas gracias.

    • 7 jose enero 27, 2010 a las 11:30 am

      Si, deberia funcionar igual.

      Como tu bien dices necesitarias expect para Windows. En su dia consegui encontrar un binario (pero me costo).
      A ver si encuentras algo aqui:

      http://expect.nist.gov/#windows

      Seguramente tengas que adaptar un poco el script, pero no deberia diferir mucho.

      • 8 Ricardo enero 28, 2010 a las 9:08 am

        Gracias Jose

        En esa página ya estuve, pero el enlace que hay en expect para windows esta obsoleto o roto.

        Asi que he intentado entrar en esa universidad a ver si veia algo y por otras web y nada.

        No se si hay por ahi otras funciones que hagan algo parecido. Ya que en un lugar remoto tengo un equipo y necesito que en él corra una aplicación que testee la conexion a internet (ping…) y si falla que entre en el router (telnet) y lo restart.

        Como esto a de ser autónomo mi problema es como interactuo con el router cuando me pide el password…ahi es donde entraría la funcion expect u otra pero para windows, ya que en ese equipo corren aplicaciones sobre windows.

  6. 9 superpiwi enero 28, 2010 a las 2:38 pm

    Tal vez usando Cygwin, te instala un entorno Unix en Windows desde el cual puedes aprovechar las utilidades y comandos de consola de Unix.

  7. 10 Cyberthrone marzo 3, 2016 a las 2:00 am

    Reblogueó esto en .


  1. 1 Linux – Scripting: Automatizar tareas – Expect, autoexpect « El camello, el Leon y el niño. O la evolución del perro al lobo Trackback en noviembre 17, 2009 a las 1:49 pm
  2. 2 Automatizar secuencias de acciones | miguelcarmona.name Trackback en mayo 24, 2010 a las 4:01 am

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s







¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

junio 2008
L M X J V S D
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Blog Stats

  • 31.351.260 hits

A %d blogueros les gusta esto: