bash - 区分用户注销和会话过期注销(SSH 和 Web 控制台)
问题描述
我们正在寻找一种解决方案,以便在用户退出系统时记录事件(例如记录到系统日志中)。这可能是从 shell (bash) 注销或使用 ssh 注销。我们想要区分通过“退出”显式用户注销和刚刚过期(超时)的用户会话。那可能吗?如何?寻找解决方案的方向是什么?
该系统是 RHEL7/CentOS7 并使用 VMWare 运行(还应记录 Web 控制台注销)。
解决方案
您可能需要太多不同的解决方案。
- 对于将有登录事件的正常会话,您可以在“退出”事件上设置陷阱。这将包括显式注销(CTRL/D 或退出)、被信号杀死(不是信号 9)和超时。寻找 bash 'trap' 命令。这些可以在 loginn 启动脚本 (bashrc) 中设置
- 对于 SSH 会话,设置远程 'bashrc' 可以捕获会话结束(包括超时、信号)。
编辑
可以通过检查“$?”来获得“超时”的指示。在 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
推荐阅读
- c++ - 概括本征类型的输入参数
- python - 部署 Python,花费很长时间来构建密码学的轮子
- jenkins - Jenkins:使用构建参数设置“定期构建”计划
- android - 如何屏蔽片段着色器
- python - 如何在同一行调用函数时执行打印语句?
- web-services - Nginx 一台服务器上有 2 个不同的域
- javascript - 理解 React 的 setState 方法
- r - mailR 错误 - 向以下服务器发送电子邮件失败:smtp.gmail.com:587 - ShinyProxy / Docker / Ubuntu
- python - 如何使用 matplotlib 创建堆积条形图?
- python - KeyError:“6b20ad27-bed8-4c2d-b5be-ec08e5480632”在我的块中找不到对象