退出时的 SSH LocalCommand

Rob*_*loi 9 osx bash ssh

~/.ssh/configLocalCommand通过 SSH 连接到远程机器时,您可以使用该指令来执行本地命令。但是当我退出SSH 连接时如何执行命令?似乎 *.bashrc/.bash_profile* 文件在连接结束或关闭时不是来源。

Chr*_*own 11

如果您希望在本地或远程计算机上执行此操作,则未在问题中指定。也没有指定哪台机器上存在哪个 shell,所以我假设bash两者都存在。

如果要在远程机器上执行它,请查看~/.bash_logout,它在登录 shell 正常注销时执行。来自man bash

当登录 shell 退出时,bash 从文件中读取并执行命令~/.bash_logout(如果存在)。

您可以进行测试~/.bash_logout以检查退出的 shell 是否是 SSH 会话,类似以下内容应该可以工作:

if [[ $SSH_CLIENT || $SSH_CONNECTION || $SSH_TTY ]]; then
    # commands go here
fi
Run Code Online (Sandbox Code Playgroud)

如果要在本地机器上执行它,请围绕ssh. 像下面这样的东西应该工作:

ssh() {
    if command ssh "$@"; then
        # commands go here
    fi
}
Run Code Online (Sandbox Code Playgroud)

这对于您的需求来说可能太简单了,但您明白了。