例如,如果我关闭 Putty 或者只是失去互联网连接,如何让服务器执行特定的命令?
评论中 Mikael 的解决方案非常有效。谢谢帮助
答案1
因为 serverfault 默认我的答案是评论,所以我从这个帖子:
最好的方法是使用 pam。
在 /etc/pam.d 中,您将有几个文件,其中一个名为 sshd。如果您只想影响 ssh,而不影响其他登录(例如 GUI 或真实 TTY),则需要此文件。如果您想影响所有登录,则需要一个“通用”文件。这个其他“通用”文件的名称因发行版而异,但您可以通过跟踪 sshd 文件中的 include 和 substack 语句来找到它,直到找到基本文件。
一旦您在 /etc/pam.d 中找到要使用的文件,请在会话部分添加如下一行:
session optional pam_exec.so quiet /etc/pam_session.sh
这将导致每次有人登录和注销(无论是正常还是非正常)时调用 /etc/pam_session.sh。
现在您只需要创建 /etc/pam_session.sh。下面是一个示例,您可以在每次有人注销时运行某些操作:
#!/bin/sh
if [ "$PAM_TYPE" = "close_session" ]; then
something
fi
(不要忘记 chmod a+x 脚本)