我如何让 bash 将 shell 命令记录到 syslog 中?

我如何让 bash 将 shell 命令记录到 syslog 中?

Bash 4.1能够将历史记录记录到 syslog 中。但是我似乎无法让它在 FreeBSD 8 下工作。
我尝试从 ports 重新编译 bash,-DWITH_SYSLOG=但无济于事。有人设法让日志记录在 FreeBSD 下工作吗?Linux 怎么样?

答案1

更好的做法是打开审计,这样你就可以记录每个运行的命令,无论他们使用什么 shell。

答案2

尝试这个:

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

这会进行记录,并阻止记录用于 bash 历史文件的时间戳。需要陷阱,因为 bash 会在多次按下 strg+c 后向“子作业”发送信号(使用 bash 4.3 测试)。这将强制注销当前用户(例如使用 sudo 登录)

相关内容