实时保存linux系统下用户的历史命令
脚本如下

[root@k8s-master ~]# cat history.sh
#!/bin/bash
#sehn
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/var/log/.history  #历史命令保存目录
if [ -z $USER_IP ];then
USER_IP=`hostname -I`
fi
if [ ! -d $HISTDIR ];then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ];then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/$DT.${LOGNAME}.${USER_IP}"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

添加权限,我这里是实验环境,直接给了777

[root@master ~]# chmod 777 history.sh

将脚本添加至/etc/profile.d/

[root@master ~]# cd /etc/profile.d/
[root@master profile.d]# ls
256term.csh  bash_completion.sh  colorgrep.sh  colorls.sh  lang.csh  less.csh  sh.local  vim.sh      which2.sh
256term.sh   colorgrep.csh       colorls.csh   csh.local   lang.sh   less.sh   vim.csh   which2.csh
[root@k8s-master profile.d]# cp /root/history.sh .

使环境变量立即生效

[root@master ~]# source /etc/profile

测试
创建一个普通用户,登录进行一系列操作

[root@master .history]# useradd test
[root@master .history]# su test
[test@master .history]$ cd /tmp/
[test@master tmp]$ ls
vmware-root_7930-1003075826  vmware-root_8425-1713837358  vmware-root_8615-1957110343  vmware-root_8654-693800911
[test@master tmp]$ mkdir abc
[test@master tmp]$ echo "hello world" > abc/test
[test@master tmp]$ exit
exit

查看历史命令保存目录,已经生成文件

[root@master test]# pwd
/var/log/.history/test
[root@master test]# ls
20200810_215123.test.192.168.200.1

可以查看到该用户操作的历史命令的内容

[root@master test]# cat 20200810_215123.test.192.168.200.1
#1597067492
cd /tmp/
#1597067497
ls
#1597067523
mkdir abc
#1597067569
echo "hello world" > abc/test
#1597067585
exit
[root@master test]#

也可以结合crontab定期将日志保存至远端服务器

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐