Ssh

在 bash 腳本結束時關閉 ssh 會話

  • September 16, 2017

在系統(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)

所有這些在退出打字稿後都會返回一個錯誤,例如使用logoutor $(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

快樂地記錄您的使用者!

引用自:https://serverfault.com/questions/873941