2009-12-31 84 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