Foros del Web » Administración de Sistemas » Unix / Linux »

Script con expect

Estas en el tema de Script con expect en el foro de Unix / Linux en Foros del Web. Quisiera que me ayudaran a terminar un script que estoy haciendo. Basicamente lo que hace es un telnet a un equipo y se logea ingresando ...
  #1 (permalink)  
Antiguo 10/08/2010, 08:57
 
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 1
Script con expect

Quisiera que me ayudaran a terminar un script que estoy haciendo.
Basicamente lo que hace es un telnet a un equipo y se logea ingresando el nombre de usuario y contraseña, no solo es un equipo son varios equipos y es ahi donde entra el problema ya que son dos usuarios y dos passwords diferentes.

Lo que tiene q hacer el script es hacer un telnet mostrar informacion del sistema y salirse, eso ya lo hace pero el problema esta cuando no entra con el primer nombre de usuario y contraseña. quisiera hacer un if para "esperar un prompt diferente y asi poder "enviar" el otro nombre de usuario y contraseña. son equipos Cisco.

Necesito si ayuda compañeros. Aqui les dejo un ejemplo de lo que tengo


#!/usr/bin/expect

set timeout 20

spawn telnet [lindex $argv 0]
expect "Username:"; send "usuario\r"
expect "Password:"; send "contraseña\r"
expect "#"; send "sh system mtu\r" <---------- aqui es donde si el nombre de usuario es correcto, ingreo el comando que quiero para q me arroje la informacion deseada pero si el prompt es diferente a "#" me va a pedir nuevamente el usuario y contraseña pero ya no se como manejar esta situacion.

quisiera hacer if para comparar el prompt del equipo cisco
  #2 (permalink)  
Antiguo 10/08/2010, 13:12
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 11 meses
Puntos: 19
Respuesta: Script con expect

expect -timeout 10 "incorrect" {send "otra-contraseña\r"; exp_continue}

Parece que esa orden en expect seria: Si aparece "incorrect" en 10 sg máximo envia (send) otra contraseña, sino continua.

referencia: http://www.tek-tips.com/viewthread.c...1447767&page=1

salu2
  #3 (permalink)  
Antiguo 10/08/2010, 13:40
Avatar de jotaaigriegao  
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Script con expect

Otro modo es que conozcas el caracter final del prompt no deseado y uses la estructura simila al case de TCL:

expect {
"prompt1" { send "mensaje1" }
"prompt2" { send "mensaje 2" }
}
  #4 (permalink)  
Antiguo 10/08/2010, 21:56
 
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 1
Respuesta: Script con expect

Compañeros del web me han ayudado mucho y les agradezco de gran manera. pude solucionar el problema con sus consejos y le puse unas cosas mas de propia idea. Para los que quieran checar el codigo y ayudarse talvez un poco con este shell les dejo aqui el codigo para que puedan ver como funciona :

#!/usr/bin/expect

set timeout 20

spawn telnet [lindex $argv 0]
expect "Username:"; send "usuario_1\r"
expect "Password:"; send "contraseña_1\r"
expect -timeout 5 "Username:" { send "usuario_2\r"; expect "Password:"; send "contraseña_2\r"; expect "#"; send "sh ip int brief\r"; exp_continue }
expect "#"; send "sh ip int brief\r"
expect "#"; send "exit\r"
exit


El programa funciona asi: Primero hace la conexion telnet luego se ingresa un usuario y password para ingresar al modo exec privilegiado del dispositivo. aqui viene lo interesante.. si el usuario y contraseña son incorrectos se espera un "Username:" por 5 segundos y se ejecuta todo lo que esta dentro de los corchetes, pero si el primer usuario y contraseña son correctos el programa efectua todo lo que esta fuera de los corchetes.
  #5 (permalink)  
Antiguo 11/08/2010, 04:34
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 11 meses
Puntos: 19
Respuesta: Script con expect

Gracias por aportar la solución.
Saludos
  #6 (permalink)  
Antiguo 11/08/2010, 16:32
 
Fecha de Ingreso: diciembre-2009
Mensajes: 20
Antigüedad: 15 años
Puntos: 1
Respuesta: Script con expect

Para eso estamos ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:05.