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


10

退出ssh连接后如何在本地终端上自动运行命令?是否有任何挂钩或事件可以处理?

Answers:


13

利用一个alias或更好的功能。

例如:

ssh () { command ssh "$@"; echo foobar; }

现在,您可以运行:

ssh mysite

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

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

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


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

command ssh mysite

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

sshfunc () { ssh "$@"; echo foobar; }

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

@OlivierDulac好点,已编辑。
heemayl

\ ssh'ssh'和“ ssh”仅转义一个别名,命令ssh将运行该命令(转义别名和函数)。
奥利维尔·杜拉克

@OlivierDulac不知道,已解决。
heemayl

就像在bash中一样,可能与其他shell有所不同...但是,现在,我喜欢这些添加内容的答案,您得到了+1 ^^
Olivier Dulac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.