リモートサーバーが接続を終了する前にリモートコマンドを実行します。

リモートサーバーが接続を終了する前にリモートコマンドを実行します。

だからこれを探してみましたが、この問題を解決する方法は見つかりませんでした。私はしばしばsudo権限なしでSSHを介してリモートサーバーに接続します。

リモートサーバーがアクティビティがないか、他の理由で接続をシャットダウン/リセットしたとします。今私が望むのは、リモートサーバーが私の接続を終了する前に、以下を実行する必要があることです。パスワード。リモートサーバーが接続の終了を延長/防止する方法があることを知っていますが、終了する前に私が選択したカスタムコマンドを実行したいと思います。

答え1

EXITBashでは、シャットダウン時にシェルがコマンドを実行するようにトラップを設定できます。

trap 'do something here' EXIT

これは^D、end-of-input()によってシャットダウンされたシェル、タイムアウト、をTMOUT使用SIGTERMまたは実行するシェル、SIGHUPSSHクライアントがハングしたSSHを介したリモートシェルに適用されます。

ただし、SSH(または他のネットワーク接続)を介して実行すると、シェルは接続が実際に閉じられるまで接続の閉じに反応できないため、その時点で印刷される内容は決して反対側の端に達しません。コマンドを実行してリモート側の内容を変更できますが、このようなコマンドはpwd内容だけを印刷するだけで便利な操作は行いません。

最後の作業ディレクトリを表示するには、プロンプトでエスケープ\w文字を使用してシェルにそれを印刷させることができます。

答え2

似ているイルカチュウの答えを使用すると、ログインシェルの終了時に実行される一連の~/.bash_logoutコマンドを生成できます。bash彼の答えの質問と同様に、SSH接続が終了しても実行されません。

関連情報