Linux/Unix Shell Scripting - expect... se puede utilizar en un if?

 
Vista:

expect... se puede utilizar en un if?

Publicado por Raúl (1 intervención) el 14/01/2009 21:27:55
Hola a todos,

soy nuevo en esto de los scripts de linux, tengo que modificar un script. El script utiliza un archivo de configuración el cual contiene los datos de 2 máquinas (HS_IP) a las que el script se conecta vía telnet. La conexión vía telnet funciona ok, el problema lo tengo porque cada máquina en realidad es un clúster de dos máquinas, entonces por ejemplo cuando se conecta a 170.30.81.5 el expect "${HS_HOME[$SLG_ACTUAL]}" espera "slg71:rfuuser>" y si cae en su cluster es "slg71:rfuuser>", para el caso de 170.30.81.9 el expect espera "slg81:rfuuser>" y puede ser "slg82:rfuuser>".

Archivo de configuración

HS_IP=(170.30.81.5 170.30.81.9)
HS_HOME=("slg71:rfuuser>" "slg81:rfuuser>")


Script
...
...
spawn telnet ${HS_IP[$SLG_ACTUAL]}
expect "login:"
send "${REMOTE_USER} "
expect "Password:"
send "${REMOTE_PASSWD} "
sleep 1
expect "${HS_HOME[$SLG_ACTUAL]}"
...
...

Lo que había pensado es incluir en el archivo de configuración con esto: HS_HOME_2=("slg72:rfuuser>" "slg82:rfuuser>") y evaluar el expect, por ejemplo cuando se conecta vía telnet a 170.30.81.5 y el expect no es "slg71:rfuuser>" entonces es "slg72:rfuuser>".
Se puede realizar la evaluación de un expect?. Cómo?
Pueden ayudarme por favor.

Desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:expect... se puede utilizar en un if?

Publicado por Mick monge (2 intervenciones) el 09/05/2009 19:57:36
Hola

he estado bucando la forma de hacer algo similar a lo que describes, o que me regrese infromacion el scrip en expect para hacerlos en shell, si te has informado en algun lado seria de mucha ayuda lo publcaras aquí, si encuentro algo te lo ago saver....

buen dias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:expect... se puede utilizar en un if?

Publicado por Vicente (3 intervenciones) el 16/09/2009 15:14:58
Puedes utilizar lo siguiente:

set COMPROBACION "slg71:rfuuser>|slg81:rfuuser>" ; # Es importante el "pipe" entre las dos cadenas

spawn telnet ${HS_IP[$SLG_ACTUAL]}
expect "login:"
send "${REMOTE_USER} "
expect "Password:"
set timeout 20
send "${REMOTE_PASSWD} "
sleep 1
expect {
-re $COMPROBACION { puts "$expect_out(0,string) " } ; # Te saca la cadena que activó el espect.
timeout { puts "Error: tiempo excedido" } ; # si han pasado 20 seg y no hay respuesta.
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar