Tenemos que tener el paquete expect instalado, una vez lo tengamos creamos un fichero con el siguiente texto:
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 host sourceforge.net
expect -exact "sourceforge.net has address 66.35.250.203" {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 -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 host ns1.telefonica-data.com
expect -exact "ns1.telefonica-data.com has address 194.224.52.36" {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 host ns1.telefonica-data.com
expect -exact "ns1.telefonica-data.com has address 194.224.52.36" {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 host sourceforge.net expect -exact "sourceforge.net has address 66.35.250.203" {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
NOTAS IMPORTANTES:
- En algunas versiones de linux puede que tengaís que cambiar la linea de:
expect -exact "ns1.telefonica-data.com has address 194.224.52.36" {puts
"todo ok\n";exit}por:
expect -exact "ns1.telefonica-data.com A 194.224.52.36" {puts
"todo ok\n";exit}
- Si quieres solo renegociar la conexión adsl cambia el reboot por:
set adsl reset( en el 3com 812 )
Luego dais permisos de ejecución al fichero ( con chmod +x fichero ), luego añadir al cron la tarea de ejecutar el ficherito de una forma similar a esta:
/home/yo/NOMBRE DE FICHERITO > /dev/null
Ojo, darle permisos para que sólo lo vea root ya que las claves del router van a estar en texto plano en el fichero.