(Tcl / Expect)退出后清除屏幕

时间:2009-12-31 22:11:57

标签: automation exec tcl interactive expect

我希望在退出my(半)交互式期望脚本后清除屏幕(在本地计算机上)。我可以在脚本中执行此操作吗?这是我尝试过的,失败了。

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

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

编辑:更改为在“退出”之前尝试清除(子问题:“exec clear”在运行期望脚本的机器上执行了吗?)

1 个答案:

答案 0 :(得分:4)

一旦你[退出],之后的所有其他内容都不会被执行。退出前你应该[执行清楚]。

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

puts \033\[2J