2009-12-31 28 views
2

Je souhaite effacer l'écran (sur la machine locale) après avoir quitté mon script d'attente (semi) interactif. Puis-je faire cela dans le script? Voici ce que j'ai essayé, qui a échoué.(Tcl/Expect) efface l'écran après la sortie

#!/usr/bin/expect -f 
set env(TERM) vt100 
spawn ssh -Y [email protected] 
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 
       } 
       ~~ 
     } 

Sur le côté distant, je ne suis pas dans un shell mais dans un programme ERP. Je pourrais sortir sur le shell puis faire un "clear" sur l'hôte distant si c'est ce qui est nécessaire, mais je pense que l'invite de l'hôte distant serait toujours à l'écran.

EDIT: changé pour essayer clair avant « sortie » (sous-question: « exec clair » est exécuté sur la machine en marche Expect bon script?)

+0

Désolé si je suis un noob Tcl. Je lis mon chemin à travers "Exploring Expect" en ce moment et en essayant des choses. – jjclarkson

Répondre

4

Une fois que vous [sortie], tout le reste après n'est pas va être exécuté. Vous devriez [exec clear] avant de quitter.

Si vous utilisez un terminal compatible VT100 (et la plupart des terminaux Unix sont), vous pouvez directement envoyer des commandes VT100 au terminal:

puts \033\[2J 
+0

J'ai changé l'ordre de ces deux lignes sans effet ... – jjclarkson

+0

Sur quelle plate-forme travaillez-vous? – slebetman

+0

Le système local (exécutant le script expect) est ubuntu linux. L'hôte sur lequel le script se connecte exécute SCO Unix. – jjclarkson