用日志记录Linux用户执行的每一条命令
用日志记录Linux用户执行的每一条命令
工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会在每个用户退出登录时,把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置
“/etc/rsyslog.conf”进一步将日志发送给日志服务器。
第一种方法
1.# vi /etc/profile
2.
3.
4.#设置history格式
5.export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am
i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
] "
6.#记录shell执行的每一条命令
7.export PROMPT_COMMAND='\
8.if [ -z "$OLD_PWD" ];then
9. export OLD_PWD=$PWD;
10.fi;
11.if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LA
ST_CMD" ]; then
12. logger -t `whoami`_shell_cmd "[$OLD_PWD]$(histo
ry 1)";
13.fi ;
14.export LAST_CMD="$(history 1)";
15.export OLD_PWD=$PWD;'