el codigo que figura al principio de cada guion:
;# script wasn't run conservatively originally
set force_conservative 1 ;# set to 1 to force conservative mode even if
if {$force_conservative} {
set send_slow {1 .001}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
A partir de la version 5.20 se puede sustituir por la siguiente llamada:
set send_slow {1.1}
set send_human {.2 .2 1 0.1 4}
En algunos ocasiones los resultados de la ejecución de una consultan se presentan de forma paginada. Esto es el dispositivo interrogado presenta una numero de determinado de lineas y espera a que pulsamos una determinada tecla antes de presentar más información.
Para resolver esta situación en nuestros guiones podemos utilizar el siguiente codigo:
...
send -- "show test\r"
expect {
"More" {send -- "\r";exp_continue}
"onsole>" {}
}
...
Es posible que un dispositivo cierre una conexion de forma inesperada, o un programa aborte por un fallo de programación. En estos casos nuestro guión recibiría un «eof», por lo que podríamos tratar esta situación insertando el siguiente codigo:
expect {
"onsole>" { send -- "show\r"}
eof {puts "Final inesperado de la conexion\n"; exit}
}
la solución a este problema es usar las sentencia expect_after y expect_before. Como su nombre indica al inlcuirlas en un guión, se comprobara la presencia de la cadena indicada antes o despues de las indicadas en cada secuencia expect.
expect_after {
eof {puts "Final inesperado de la conexion\n"; exit}
}
send -- "show\r";
expect {
"onsole>" { send -- "\r"}
}
También puede servir para tratar las respuestas a comandos mal tecleados:
expect_before {
"Invalid command syntax {puts "Comando incorrecto\n"; exit}
}
send -- "sohw -i\r";
expect {
"onsole>" { send -- "\r"}
}