如何在 SSH 会话关闭时执行命令?

如何在 SSH 会话关闭时执行命令?

例如,如果我关闭 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 脚本)

相关内容