我们正在寻找一种解决方案,用于在用户注销系统时记录事件(例如记录到系统日志中)。这可能是从 shell (bash) 注销或使用 ssh 注销。我们想要区分通过“退出”显式用户注销和刚刚过期(超时)的用户 session 。那可能吗?如何?寻找解决方案的方向是什么?
系统为RHEL7/CentOS7,使用VMWare运行(web控制台注销也要记录)。
最佳答案
您可能需要太多不同的解决方案。
- 对于具有登录事件的普通 session ,您可以在“EXIT”事件上设置陷阱。这将涵盖显式注销(CTRL/D 或退出)、被信号杀死(不是信号 9)和超时。寻找 bash 的“陷阱”命令。这些可以在登录启动脚本(bashrc)中设置
- 对于 SSH session ,设置远程“bashrc”可以捕获 session 结束(包括超时、信号)。
编辑
可以通过检查“$?”来获得“TIMEOUT”的指示在 TRAP 处理程序中。它将是 142 对应于 ALRM 信号 (kill -l 142=ARLM)。这不是明确的文档,但与 kill -ALRM 的默认信号处理程序一致。
function my_trap {
local X=$1
if [ "$X" = "$(kill -l ALRM)" ] ; then
Log Timeout
else
Log Exit/EOF
fi
}
trap 'my_trap $?' EXIT
关于bash - 区分用户注销和 session 过期注销(SSH 和 Web 控制台),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58501165/