天天看点

利用PROMPT_COMMAND记录每个用户执行的历史命令

在/etc/profile里加入以下几行

1

2

3

<code>export HISTORY_FILE=/var/log/command_history/`date </code><code>'+%Y-%m-%d'</code><code>`.log</code>

<code>export PROMPT_COMMAND=</code><code>'{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}")  #### $(history 1 | { read x cmd; echo "$cmd"; })"; } &gt;&gt; $HISTORY_FILE'</code>

<code>chmod a+w </code><code>$HISTORY_FILE</code>    <code>给所有用户加写权限</code>

4

<code>export PROMPT_COMMAND=</code><code>'{ date "+%Y-%m-%d %T $(history 1 | { read x cmd; echo "$cmd USER:$USER FROM IP:$SSH_CLIENT PS:$SSH_TTY"; })"; } &gt;&gt;$HISTORY_FILE'</code>

<code>export PROMPT_COMMAND=</code><code>'{ date "+[ %Y%m%d %H:%M:%S `whoami` ] `history 1 | { read x cmd; echo "$cmd      USER:$USER from ip:$SSH_CLIENT   $SSH_TTY"; }`"; } &gt;&gt; /root/test.log'</code>

<code>export</code> <code>PROMPT_COMMAND=</code><code>'{ date "+%Y-%m-%d %T  $(who am i |awk "{print \$1\" \"\$2\" \"\$5}")   $(history 1 | { read x cmd; echo "$cmd"; })"; } &gt;&gt; /tmp/`date "+%F"`.`hostname`.`whoami`.history-timestamp'</code>

<code>export</code> <code>PROMPT_COMMAND=</code><code>'{ msg=$(history 1 | { read x y; echo $y; });user=$(whoami);echo $(date "+%F %H:%M:%S"):$user:`pwd`/:$msg ---- $(who am i); } &gt;&gt; /tmp/`date "+%F"`.`hostname`.`whoami`.history-timestamp'</code>

添加完成,保存退出,然后使用如下的命令使之生效:

#. /etc/profile

# source /etc/profile

注意:如果没有报错说明成功了。

然后每个用户执行的历史命令就会存在以当前日期命名的log文件中。

本文转自 xoyabc 51CTO博客,原文链接:http://blog.51cto.com/xoyabc/1658267,如需转载请自行联系原作者

继续阅读