区分用户注销和会话过期注销(SSH和Web控制台)

时间:2019-10-22 09:30:16

标签: bash centos logout syslog openssh

我们正在寻找一种解决方案,以在用户注销系统时记录事件(例如,记录到syslog中)。这可能是从shell(bash)注销或使用ssh注销。我们要区分通过“退出”的显式用户注销和刚刚到期的用户会话(超时)。那可能吗?如何?寻找哪个方向的解决方案?

系统为RHEL7 / CentOS7,并使用VMWare运行(也应记录Web控制台注销)。

1 个答案:

答案 0 :(得分:1)

您可能需要太多不同的解决方案。

  • 对于具有登录事件的常规会话,您可以在“ EXIT”事件上设置陷阱。这将涉及显式注销(CTRL / D或退出),被信号杀死(NOT信号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