3

(半)インタラクティブなexpectスクリプトを終了した後、(ローカルマシンで)画面をクリアしたい。スクリプト内からそれを行うことはできますか?これが私が試したものですが、失敗しました。

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

リモート側では、私はシェルではなく、ERPプログラムに参加しています。シェルを終了して、必要に応じてリモートホストで「クリア」を実行することもできますが、リモートホストのプロンプトは引き続き画面に表示されると思います。

編集:「exit」の前にクリアを試みるように変更されました(サブ質問:「execclear」はexpectスクリプトを実行しているマシンで実行されますか?)

4

1 に答える 1

6

[exit] すると、それ以降は実行されません。終了する前に [exec clear] する必要があります。

vt100 互換端末を使用している場合 (ほとんどの Unix 端末はそうです)、vt100 コマンドを端末に直接送信してみてください。

puts \033\[2J
于 2009-12-31T22:29:05.567 に答える