Frage

Ich möchte den Bildschirm (auf der lokalen Maschine) löschen, nachdem ich aus meinem (semi) interaktiven Erwartungsskript beendet ist. Kann ich das aus dem Skript aus tun? Folgendes habe ich versucht, das ist gescheitert.

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

Auf der abgelegenen Seite bin ich nicht in einer Hülle, sondern in einem ERP -Programm. Ich könnte mit der Shell eingehen und dann einen "klaren" auf dem Remote -Host machen, wenn das notwendig ist, aber ich denke, die Eingabeaufforderung für die Remote -Host würde immer noch auf dem Bildschirm stehen.

Bearbeiten: geändert, um vor "Beenden" zu versuchen (Unterfragen: "Exec Clear" wird auf dem Computer ausgeführt, das das erwartete Skript ausführt, oder?)

War es hilfreich?

Lösung

Sobald Sie [beenden], wird alles andere nicht ausgeführt. Sie sollten vor dem Verlassen [ausführen].

Wenn Sie ein VT100 -kompatibler Terminal verwenden (und die meisten Unix -Terminals) können Sie versuchen, VT100 -Befehle direkt an das Terminal zu senden:

puts \033\[2J
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top