(半)インタラクティブな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スクリプトを実行しているマシンで実行されますか?)