Domanda

Voglio cancellare lo schermo (sulla macchina locale) dopo l'uscita dal mio (semi) script interattivo aspettare. Posso farlo all'interno dello script? Ecco quello che ho provato, che non è riuscita.

#!/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
                }
                ~~  
        } 

Sul lato remoto non sono in un guscio, ma in un programma ERP. Potrei uscire alla shell poi fare un "chiaro" sulla macchina remota, se questo è ciò che è necessario, ma penso che il prompt di host remoto sarebbe ancora sullo schermo.

EDIT: cambiato per cercare chiaro prima "uscita" (sub-domanda: "exec chiaro" viene eseguito sulla macchina che esegue lo script aspetta a destra)

È stato utile?

Soluzione

Una volta che [l'uscita], tutto il resto dopo non è sta per essere eseguito. Si dovrebbe [exec chiaro] prima di uscire.

Se si utilizza un terminale compatibile VT100 (e la maggior parte dei terminali Unix sono) allora si può provare direttamente l'invio di comandi VT100 al terminale:

puts \033\[2J
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top