所以我搜索了这个,但没有找到任何可以解决这个问题的内容。我经常通过 ssh 连接到没有 sudo 权限的远程服务器。
假设由于不活动或其他原因,远程服务器终止/重置了连接。现在我想要的是,在远程服务器终止我的连接之前,它应该运行一个密码。我知道有一些方法可以延长/防止远程服务器终止您的连接,但我希望它在终止之前运行我选择的自定义命令
答案1
在 Bash 中,您可以设置一个陷阱,让EXIT
shell 在退出时运行命令:
trap 'do something here' EXIT
这适用于由于输入结束 ( ^D
)、超时而退出的 shell、TMOUT
使用SIGTERM
或进行射击的SIGHUP
shell,以及通过 SSH 的远程 shell(其中 SSH 客户端死机)。
但是,当通过 SSH(或其他网络连接)运行时,shell 在连接真正关闭之前无法对连接关闭做出反应,因此此时它打印的任何内容都不会到达另一端。您可以运行一个命令来修改远程端的内容,但是像 之类的命令pwd
只是打印内容,不会做任何有用的事情。
如果您确实希望显示最后一个工作目录,您可以让 shell 在提示符上打印它,并使用转义\w
符。
答案2
类似于伊尔卡丘的回答,您可以创建~/.bash_logout
一组在bash
登录 shell 退出时运行的命令。与他的回答中的问题类似,如果 SSH 连接终止,则不会运行。