2013-08-23 60 views
0

SSH連接我有這樣的腳本:命令,以斷開腳本

#!/bin/bash 
#!/usr/bin/expect 
dialog --menu "Please choose the server to connect to:" 10 30 15 1 RAS01 2>temp 

#OK is pressed 
if [ "$?" = "0" ] 
then 
     _return=$(cat temp) 

     # /home is selected 
     if [ "$_return" = "1" ] 
     then 
       dialog --infobox "Connecting to server ..." 5 30 ; sleep 2 
       telnet XXX 
     fi 

# Cancel is pressed 
else 
     exit 
fi 

# remove the temp file 
rm -f temp 

在代碼的一部分,說:# Cancel is pressed我要插入一些類型的命令,將斷開的會話,並自動關閉終端。香港專業教育學院嘗試了不同的變化exitexit 1exit 5close等,但沒有人可以做的伎倆

回答

1

這裏是你可以做什麼:

kill -9 "$(ps --pid $$ -oppid=)" 

但我絕對建議你不要用這種方式。更好的解決方案是獲取腳本的退出代碼並在需要時退出。例如

yourscript

#... ... 
else 
    exit 1 
fi 

而在你的SSH連接你做:

./myscript || exit 

這是正確的做法。嘗試使用它

+0

謝謝!我還有另外一個問題。處理取消按鈕時,這解決了我的整個問題。但是,當用戶選擇OK時,它會啓動到另一個服務器的telnet連接...一旦與外部服務器的telnet會話關閉,腳本運行的連接將自動註銷。基本上試圖使用相同的命令:'kill -9'$(ps --pid $$ -oppid =)「'但是當到外部服務器的telnet會話被關閉時。 –

+0

@WiloMaldonado對不起,我沒跟着你。你能提供一個例子嗎? –

+0

簡而言之,我們希望此腳本自動爲用戶加載,而不允許他們執行其他任何操作。它會自動加載,如果它們在對話框屏幕上取消,它會斷開會話。因此,如果我在Server1並選擇啓動到Server2的telnet連接(如上面的代碼所示),一旦完成了我在Server2的任何操作並關閉了在Server2的會話,連接就會反彈回Server1,但腳本不再運行。一旦用戶從Server2返回,我們想要終止到Server1的活動連接。這更清楚嗎? –