【history】如何丝滑地记录Linxu命令行操作历史?

对于运维来讲,history命令应该说是用到最多的了,尤其是一些老旧的系统,一些历史命令更多时候,相当于是运维手册,但是history命令有时候也有很多不方便的地方。

今天介绍一种方式,是把历史命令,不同用户使用的历史命令都可以根据用户记录下来,甚至可以做为审计使用。

执行如下脚本,会在/etc/profile.d下面生成一个cmd.sh脚本,然后会在/etc/ryslogd.d下建立一个日志规则,结果的话,是在/var/log下生成具体记录。

注意: 密码啥的不建议直接命令行直接输入!!!

# cat gen_histry.sh

#!/bin/bash
# Debug:set -x

# Check if user is root
   if [ $(id -u) -ne "0" ]; then
       echo "Error: You must be root to run this script, please use root to install."
       exit 1
   fi
# define variables
cmd_path=/etc/profile.d
log_path=/etc/rsyslog.d

cat > $cmd_path/cmd.sh << 'EOF'
#!/bin/bash

# get realip
WHOAMI=`who -u am i | awk '{print $NF}'`
DATE=`date +%F_%T`

if [ -n "$WHOAMI" ];then
    declare -x REAL_LOGNAME=`who am i | cut -d" " -f1`
    declare -x REAL_IP=`who -u | egrep $WHOAMI | head -1 | awk '{print $NF}' | sed -e 's/[()]//g'`
  else
    echo "$DATE ssh execute." >> /dev/null
fi 

if [ $USER == root ]; then
        declare -x PROMT="#"
  else
        declare -x PROMT="$"
fi

LAST_HISTORY="$(history 1)"
__LAST_COMMAND="${LAST_HISTORY/*:[0-9][0-9] /}"

declare -x h2l='
    THIS_HISTORY="$(history 1)"
    __THIS_COMMAND="${THIS_HISTORY/*:[0-9][0-9] /}"
    if [ "$LAST_HISTORY" != "$THIS_HISTORY" ];then
        __LAST_COMMAND="$__THIS_COMMAND"
        LAST_HISTORY="$THIS_HISTORY"
        logger -p local4.notice -i -t $REAL_LOGNAME $REAL_IP "[$USER@$HOSTNAME $PWD]$PROMT $__LAST_COMMAND"
    fi'
trap "$h2l" DEBUG
EOF
#####
if [ -d $log_path ];then
    echo "$log_path does exist"
  else 
    mkdir -p $log_path
fi

# record cmd log
cat > $log_path/cmd_track.conf << 'EOF'
# Log nc_profile generated CMD log messages to file
local4.notice /var/log/history.log

& ~
EOF

重启 syslogd

#  sh  gen_histry.sh
# systemctl restart syslogd

具体结果的话,是这样的:

image.png

可以看到具体的主机名、登陆用户、操作指令、从哪里登陆的都可以很清晰的看到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值