Para utilizar el script bajo windows tenemos que instalar dos cosas: Un cron para windows: http://www.kalab.com/freeware/cron/crons.zip Expect para windows: ftp://bmrc.berkeley.edu/pub/winnt/tcltk/expect/expect-5.21r1b1-setup.exe
Instalación:
- Instalar el programa de expect en c:\router
- Instalar el programa de cron en c:\cron
- Abris una shell de msdos ( cmd.exe ) y entrais al directorio de cron:
cd cron
ejecutar: crons.exe /install
Crear el fichero crontab con este texto en su interior: ( con esta linea se ejecutara el chequeo cada hora, teneis mas info en la web del programa )
0 * * * * router.bat
y lo moveis a c:\winnt\system32
Creais el fichero router.bat en c:\ en este texto:
c:
cd \
cd router\bin\
tclsh80.exe router.txt
Crear el fichero router.txt con el script reseteador de vuestro router modificado con vuestras claves en el interior de c:\router\bin
NOTASolo tengo un router 3com 812, por lo que solo se que funciona 100 % con ese router bajo windows y con esta configuracion de script:
3com 812:
#!/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
}
}
puts "\n"
spawn ping -n 1 194.224.52.36
expect -exact "Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0%
perdidos)" {puts "todo ok\n";exit}
spawn telnet IP DEL ROUTER
expect "ogin:*"
send -- "TU USUARIO\r"
expect "assword:*"
send -- "TU PASSWORD\r"
send_user "\ reseteo el router: "
send -- " reboot\r"
expect -exact "Please confirm the request.(No/Yes):"
send -- " Yes\r"
expect -gl "\\\[*]\$*"
puts "\n"
exit
SpeedStream 5660
#!/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
}
}
puts "\n"
spawn ping -n 1 194.224.52.36
expect -exact "Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0%
perdidos)" {puts "todo ok\n";exit}
spawn telnet IP_ROUTER
expect "Password:*"
send -- "PASSWORD_ROUTER\r"
expect -exact {
timeout {}
"coneection refused" {}
}
send_user "\ reseteo del router: "
send -- " reboot\r"
expect -exact "Are you sure? default: n (y,n)"
send -- "y\r"
expect -gl "\\\[*]\$*"
puts "\n"
exit
Zyxel
#!/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
}
}
puts "\n"
spawn ping -n 1 194.224.52.36
expect -exact "Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0%
perdidos)" {puts "todo ok\n";exit}
spawn telnet TUIP_Router
expect "assword: "
send -- "PASS\r"
#send_user "\ reseteo el router: "
expect -exact "Enter Menu Selection Number:"
send -- "24\r"
#expect -exact "Please confirm the request.(No/Yes):"
#send -- "4\r"
expect -exact "Enter Menu Selection Number:"
send -- "4\r"
expect -exact "Enter Menu Selection Number:"
send -- "1\r"
expect -exact "Enter Menu Selection Number: "
send -- "99\r"
#expect -gl "\\\[*]\$*"
puts "\n"
exit
USR 9003
#!/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 } } puts "\n" spawn ping -n 1 194.224.52.36 expect -exact "Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos)" {puts "todo ok\n";exit} spawn telnet IP DEL ROUTER expect "ogin:*" send -- "LOGIN DEL ROUTER\r" expect "assword:*" send -- "PASSWORD DEL ROUTER\r" send_user "\ reseteo el router: " send -- " reboot\r" expect -gl "\\\[*]\$*" puts "\n" exit
Lanzais el servicio cron desde el administrador de servicios de vuestro windows.
-
- Agradezco a **N0K** y Beltzak la adaptación del script para los routers SpeadStream y Zyxel.
Actualizado 27 de Mayo del 2004.
Añadida configuración bajo windows de routers: SpeedStream, zyxel y USR9003
- Este documento está liberado bajo licencia Copyleft. http://www.gnu.org/copyleft/copyleft.es.html