【centos8】实时记录命令行的操作时间,用户名,终端,终端ip,操作路径,操作命令,操作命令返回值

一 操作环境

操作环境为centos 8.1  或着其他linux 发行版;

 

二 具体步骤

在/etc/profile 中添加如下内容

export PROMPT_COMMAND=__set_prompt
readonly PROMPT_COMMAND

__set_prompt () {

    local EXIT=$?

    if [ ! -d /var/log/cmd ]
    then
        mkdir /var/log/cmd
        if [ `id -u` -eq 0 ]
        then
            chattr +a /var/log/cmd
        fi
    fi

    log_file=/var/log/cmd/`date '+%y-%m-%d'`.log
    if [ ! -f $log_file ]
    then
        touch $log_file
        chmod 777 $log_file
        chattr +a $log_file
    fi

    echo "$(date '+%y-%m-%d %T') == $(who am i | awk "{print \$1\" \"\$2\" \"\$5}") == $(pwd) == $(history 1 | sed 's/^[ \t]*//g' | cut -d " " -f2-) == [$EXIT]" >>$log_file

    return $EXIT
}

然后执行 source /etc/profile

如果以前设置过 PROMPT_COMMAND  最好重启下系统;

效果如下:

20-03-14 20:43:01 == root pts/1 (192.168.199.219) == /root ==  source /etc/profile == [0]
20-03-14 20:43:06 == root pts/1 (192.168.199.219) == /root ==  nihao  == [127]
20-03-14 20:43:08 == root pts/1 (192.168.199.219) == /root ==  df  == [0]
20-03-14 20:43:09 == root pts/1 (192.168.199.219) == /root ==  ttt == [127]
[root@localhost ~]# date
Sat Mar 14 20:43:40 EDT 2020

PROMPT_COMMAND 解释参考 man bash

       PROMPT_COMMAND
              If set, the value is executed as a command prior to issuing each primary prompt.

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值