在远程服务器终止连接之前执行远程命令

在远程服务器终止连接之前执行远程命令

所以我搜索了这个,但没有找到任何可以解决这个问题的内容。我经常通过 ssh 连接到没有 sudo 权限的远程服务器。

假设由于不活动或其他原因,远程服务器终止/重置了连接。现在我想要的是,在远程服务器终止我的连接之前,它应该运行一个密码。我知道有一些方法可以延长/防止远程服务器终止您的连接,但我希望它在终止之前运行我选择的自定义命令

答案1

在 Bash 中,您可以设置一个陷阱,让EXITshell 在退出时运行命令:

trap 'do something here' EXIT

这适用于由于输入结束 ( ^D)、超时而退出的 shell、TMOUT使用SIGTERM或进行射击的SIGHUPshell,以及通过 SSH 的远程 shell(其中 SSH 客户端死机)。

但是,当通过 SSH(或其他网络连接)运行时,shell 在连接真正关闭之前无法对连接关闭做出反应,因此此时它打印的任何内容都不会到达另一端。您可以运行一个命令来修改远程端的内容,但是像 之类的命令pwd只是打印内容,不会做任何有用的事情。

如果您确实希望显示最后一个工作目录,您可以让 shell 在提示符上打印它,并使用转义\w符。

答案2

类似于伊尔卡丘的回答,您可以创建~/.bash_logout一组在bash登录 shell 退出时运行的命令。与他的回答中的问题类似,如果 SSH 连接终止,则不会运行。

相关内容