添加以下命令至/etc/profile中
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
export PROMPT_COMMAND="history 1 | logger -t cmd_log -p user.notice"
history命令的内容保存在用户的~/.bash_history文件中,用户可随时更改或者清除。为了统一管理用户的命令记录,执行的命令能输出到某个文件内。达到这个目的需要 PROMPT_COMMAND环境变量的协助。设置PROMPT_COMMAND将用户的上一条命令log到syslog里面去
logger命令将信息输出到/var/log/messages中。任意输入一个命令,然后打开/var/log/messages,会看到已经记录。/var/log/messages文件只有root有权限访问,从而达到了记录用户IP和命令的目的。
还可以将命令记录输出到单独的文件中。这需要在logger命令的-p选项中指定工具名称和等级,例如local2.notice,然后编辑/etc/rsyslog.conf,将local2的信息输出到单独文件:
local2.* /var/log/command.log
最后重启rsyslog服务。