だからこれを探してみましたが、この問題を解決する方法は見つかりませんでした。私はしばしばsudo権限なしでSSHを介してリモートサーバーに接続します。
リモートサーバーがアクティビティがないか、他の理由で接続をシャットダウン/リセットしたとします。今私が望むのは、リモートサーバーが私の接続を終了する前に、以下を実行する必要があることです。パスワード。リモートサーバーが接続の終了を延長/防止する方法があることを知っていますが、終了する前に私が選択したカスタムコマンドを実行したいと思います。
答え1
EXIT
Bashでは、シャットダウン時にシェルがコマンドを実行するようにトラップを設定できます。
trap 'do something here' EXIT
これは^D
、end-of-input()によってシャットダウンされたシェル、タイムアウト、をTMOUT
使用SIGTERM
または実行するシェル、SIGHUP
SSHクライアントがハングしたSSHを介したリモートシェルに適用されます。
ただし、SSH(または他のネットワーク接続)を介して実行すると、シェルは接続が実際に閉じられるまで接続の閉じに反応できないため、その時点で印刷される内容は決して反対側の端に達しません。コマンドを実行してリモート側の内容を変更できますが、このようなコマンドはpwd
内容だけを印刷するだけで便利な操作は行いません。
最後の作業ディレクトリを表示するには、プロンプトでエスケープ\w
文字を使用してシェルにそれを印刷させることができます。
答え2
似ているイルカチュウの答えを使用すると、ログインシェルの終了時に実行される一連の~/.bash_logout
コマンドを生成できます。bash
彼の答えの質問と同様に、SSH接続が終了しても実行されません。