SSHを介してリモートコンピュータに接続するたびに、このディレクティブを使用して~/.ssh/config
ローカルLocalCommand
コマンドを実行できます。しかし、私はいつ出口SSH接続? *.bashrc/.bash_profile* ファイルは、接続の終了またはクローズ時にインポートされないようです。
答え1
ローカルシステムまたはリモートシステムでこれを行うかどうかの仕様はありません。どのシステムにどのシェルが存在するかについての仕様もないので、両方のbash
システムに存在すると仮定します。
リモートコンピュータで実行するには、~/.bash_logout
ログインシェルが正常にログアウトしたときに実行されることを確認してください。からman bash
:
ログインシェルが終了すると、bash はファイルが
~/.bash_logout
存在する場合はそのコマンドを読み込み実行します。
~/.bash_logout
次のように、ログアウトされたシェルがSSHセッションかどうかをテストして確認できます。
if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
# commands go here
fi
ローカルコンピュータで実行するには、関数ラッパーを作成しますssh
。次のように動作する必要があります。
ssh() {
if command ssh "$@"; then
# commands go here
fi
}
これはあなたのニーズに比べて簡単すぎるかもしれませんが、アイデアを得ることができます。
答え2
あなたは正しい道を行っています。ssh
セッションがリモートコマンドではなくログインシェルの場合は、bash
シェルを終了したときにソースを取得します/etc/bash.logout
。~/.bash_logout
リモートコマンドを実行するには、bash
ログインシェルを強制することができます。LocalCommand
次のように見えます。
bash -l -c /execute/some/command
~からman 1 bash
-c string If the -c option is present, then commands are read from
string. If there are arguments after the string, they are assigned to
the positional parameters, starting with $0.
-l Make bash act as if it had been invoked as a login shell
When a login shell exits, bash reads and executes commands from the
files ~/.bash_logout and /etc/bash.bash_logout, if the files exists.