Ssh
在 bash 腳本結束時關閉 ssh 會話
在系統(debian 8)每個使用者的 .profile 中,我呼叫一個腳本來啟動一個打字稿會話,以將所有內容記錄在一個文件中:
#!/bin/bash script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log
問題是當您輸入“exit”時,您只需停止 typscrit 會話,而不是 ssh 連接,因此您必須再次輸入 exit。當我們通過輸入“exit”退出打字稿時,我想關閉 ssh 連接。我嘗試了不同的東西:
在我的腳本結束時:
exit or logout or $(logout)
所有這些在退出打字稿後都會返回一個錯誤,例如使用
logout
or$(logout)
:/pathtoscript/log.sh: 9: /pathtoscript/log.sh: logout: not found
但這是一個系統命令,所以我只需要在腳本末尾的系統中執行它,這應該很好!
在 .bashrc 中:
function exit() { builtin exit && exit; }
當我點擊“退出”打字稿停止而不是 ssh 會話時,這個函式沒有附加任何內容。
你的東西不能按照你想要的方式工作,但正如你所說的那樣:
.profile 由您的 shell 提供,就像您手動鍵入每個字元一樣。如果您在 shell 中執行腳本或其他程序,您希望在它完成後立即返回到您的提示符。這正是你正在經歷的。
您可以在 .profile 中放置一個出口,它會像您在互動式 shell 中鍵入一樣退出。您的 .profile 可能如下所示:
# ... whatever comes before script -f $HOME/.log/$(date +"%d-%b-%y_%H-%M-%S")_shell.log exit
快樂地記錄您的使用者!