سؤال

أرغب في مسح الشاشة (على الجهاز المحلي) بعد الخروج من البرنامج النصي التفاعلي (شبه) المتوقع. هل يمكنني فعل ذلك من داخل البرنامج النصي؟ هذا ما جربته ، فشل ذلك.

#!/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. يمكنني الخروج إلى القشرة ثم القيام "واضح" على المضيف البعيد إذا كان هذا هو الضروري ، لكنني أعتقد أن موجه المضيف عن بُعد سيظل على الشاشة.

تحرير: تم تغييره لمحاولة واضحة قبل "الخروج" (يتم تنفيذ "Quision Question:" exec clear "على الجهاز الذي يدير البرنامج النصي المتوقع بشكل صحيح؟)

هل كانت مفيدة؟

المحلول

بمجرد [الخروج] ، لن يتم تنفيذ كل شيء آخر بعد. يجب عليك [EXEC CLEAR] قبل الخروج.

إذا كنت تستخدم محطة متوافقة مع VT100 (ومعظم أطراف UNIX) ، فيمكنك محاولة إرسال أوامر VT100 مباشرة إلى المحطة:

puts \033\[2J
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top