ローカルコンピュータ経由でもSSH経由でも端末セッションが開始されると、.profile/.bash_profileがロードされることがわかります。セッションが終了すると、ファイルはロード/呼び出しされますか?
理由:特定のユーザーに接続されているターミナルセッションの日付とIPアドレスを記録するように.profileを設定しました。
答え1
~/.bash_logout
ログインシェルが終了するとbashによって実行されます。ただし、を使用してIPアドレスと日付の詳細を取得することもできますlastlog
。試してみましたか?
~/.bash_logout
ただし、セッションが実行されないか、kill -9 $$
強制的に閉じることができます。
答え2
すべてのシェルには、シェルが終了したときにいくつかのコードを実行する方法があります。トラップ。 「trap」はシェル語です。信号ハンドラ。特別な値を使用する場合、またはシェルが正常に終了した場合(入力の終わりに到達または呼び出された場合)、INT
信号の名前(、、...)または番号を一覧表示して信号トラップを設定できます。HUP
0
EXIT
exit
trap 'echo "$IP_ADDRESS logged out at $(date)" >>"$LOG_FILE"' EXIT HUP INT TERM
トラップや停電に陥ることはできませんkill -KILL
。
私はあなたがしていることが本当にうまくいくかどうか疑問に思います。この情報はシステムログに記録されます。kill -KILL
そこにも入ることができ、もっと信仰が行きました。このコマンドは、last
最後のログ交換以降のすべての過去および現在のセッションの開始日、終了日、およびソース(エンドポイントまたはIPアドレス)を表示します。