2009-12-31 92 views
2

我想在退出我的(半)交互式期望脚本后清除屏幕(在本地机器上)。我可以在剧本中做到吗?这是我尝试过的,失败了。(Tcl/Expect)退出后清屏

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

在远程方面,我不是在shell中,而是在ERP程序中。如果这是必要的,我可以退出到shell然后在远程主机上执行“清除”,但是我认为远程主机提示仍然会在屏幕上。

编辑:改为尝试“退出”之前明确(子问题:“EXEC清除”运行expect脚本权在计算机上执行?)

+0

很抱歉,如果我是一个Tcl小白。我正在通过“探索期待”的方式阅读我的方式并尝试一些东西。 – jjclarkson 2009-12-31 22:58:48

回答

4

一旦[退出],一切都没有经过其他将被执行。退出前你应该[清除]。

如果您使用的是VT100兼容终端(和大多数Unix终端),那么你可以直接尝试发送VT100命令到终端:

puts \033\[2J 
+0

我将这两行的顺序切换为无效...... – jjclarkson 2009-12-31 22:33:17

+0

你在哪个平台上运行? – slebetman 2010-01-01 03:08:11

+0

本地系统(运行expect脚本)是ubuntu linux。脚本正在登录的主机正在运行SCO Unix。 – jjclarkson 2010-01-01 05:35:04