退出ssh后如何自动运行命令

B F*_*ley 10 shell bash ssh

退出ssh连接后如何在本地终端上自动运行命令?有没有可以为此处理的钩子或事件?

hee*_*ayl 13

利用一个alias或更好的函数。

例如:

ssh () { command ssh "$@"; echo foobar; }
Run Code Online (Sandbox Code Playgroud)

现在,您可以运行:

ssh mysite
Run Code Online (Sandbox Code Playgroud)

退出ssh会话后,echo foobar将运行。

echo foobar使用您需要运行的实际命令进行更改,当然您可以根据需要添加多个命令。

要使函数定义永久化,请将其放在您的~/.bashrc.


另请注意,可能并不总是希望将函数命名为ssh当您要显式使用外部ssh. 在这种情况下,您可以使用以下任一方法跳过该ssh函数以获取外部ssh二进制文件:

command ssh mysite
Run Code Online (Sandbox Code Playgroud)

或将函数重命名为其他名称,例如sshfunc

sshfunc () { ssh "$@"; echo foobar; }
Run Code Online (Sandbox Code Playgroud)

  • 注意:我建议将该函数重命名为“ssh”以外的其他名称,因此您保留 ssh 的原始含义...也许: ssh2 ?或 sshcmd ?(否则,您可能会在执行以下操作时忘记它的副作用:`ssh user@host 'cd /somewhere/ && tar cf - | gzip -c -' > local_backup_of_somewhere.tgz`:这将是错误的,因为它将包含“foobar”在末尾...) (4认同)