Pregunta

Quiero borrar la pantalla (en la máquina local) después de salir de mi (semi) interactiva esperan guión. ¿Puedo hacerlo desde dentro de la escritura? Esto es lo que he intentado, que fracasó.

#!/usr/bin/expect -f
set env(TERM) vt100
spawn ssh -Y username@domain
set user username
set pass password 
#login sequence
expect "password: "
send "${pass}\r"
sleep .5  
#some menu commands to enter ERP....
#...
#...
set CTRLZ \032
set CTRLC \003
set CTRLA \001
#don't time out
set timeout -1 
        interact {
                -reset $CTRLZ {exec kill -STOP [pid]}
                $CTRLA   {   
                        exp_send "menucmd...\ry\r"
                }   
                $CTRLC   {  

                        #clear the host machine screen???
                        exec clear
                        exit
                }
                ~~  
        } 

En el lado remoto no estoy en una concha, pero en un programa ERP. Podía salir de la cáscara y luego hacer un "claro" en el host remoto, si eso es lo que es necesario, pero creo que el host remoto pronta todavía estaría en la pantalla.

EDIT: cambiado a tratar claro antes de "salida" (sub-pregunta:? "Exec clara" se ejecuta en la máquina que ejecuta el script Expect derecha)

¿Fue útil?

Solución

Una vez que [salida], después de todo lo demás no va a ser ejecutado. Usted debe [exec claro] antes de salir.

Si está utilizando un terminal compatible con VT100 (y la mayoría de los terminales UNIX son) entonces puede intentar enviar directamente VT100 comandos al terminal:

puts \033\[2J
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top