首页 > 解决方案 > 如何记录服务器上所有用户的所有 Bash (busybox/ash) 命令?

问题描述

我们如何在本地记录所有运行的 Bash 命令以及用户和时间戳?

我正在寻找一种使用我自己的别名集和诸如此类的东西来自定义 Ash 会话的方法。什么是 Bashbashrc文件的 Ash 等价物?

标准解决方案不起作用:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

标签: syslogbusybox

解决方案


这是用于 rsyslog:

  1. 编辑 /etc/rsyslog.conf 并放一行

    local6.*                                  /var/log/mylog
    
  2. 而不是 PROMPT_COMMAND 导出 PS1 在 /etc/profile 例如:

    export PS1='$(RETRN_VAL=$?;logger -p local6.debug "[$$]: $(history | tail -1) [$RETRN_VAL]")\u@\h:\w\$ '
    

当然,您可以更改命令以从历史输出中删除不必要的字符。


推荐阅读