linux记录所有用户登陆及执行过的命令脚本

第一个窗口
[root@hdss7-4 ~]# echo "
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname` ## 获取ip 并且存到变量中
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history ## 判断该目录下 是否有此目录如果没有则新建且开启 777权限
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME} ## 判断 /var/log/history目录下有没有 当前登录的用户文件夹,如果没有则创建且设置 300 权限 LOGNAME: 是当前登录的用户名 例如 ubuntu或root
chmod 300 /var/log/history/${LOGNAME}
fi
## 最后更改全局的HISTFILE变量
export HISTSIZE=4096 ##更改HISTFILE 大小
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
## 全局更改 HISTFILE的日志存放目录 默认 每个用户下面都有自己的bash.history 这样做是为了集中管理记录这些命令日志,
##修改了全局变量 HISTFILE 就等于修改了 全部用户的HISTFILE设置。
##所以 最终呈现的效果就是 在用户退出远程连接时 才会记录到日志中。
## 此操作 其实 就是 更改了各个用户的history存储目录且日志文件名字有所变化其他的都跟原来一样。
chmod 600 /var/log/history/${LOGNAME}/history 2>/dev/null
">>/etc/profile

[root@hdss7-4 ~]# source /etc/profile
[root@hdss7-4 ~]# useradd zhangsan
[root@hdss7-4 ~]# echo "aaaaaa" | passwd --stdin zhangsan

新开一个窗口(就是第二个窗口)
rambo@rambo:~$ ssh zhangsan@172.16.186.23
任意执行进行测试

回到第一个窗口进行查看

QQ群一起学习Linux、开源、系统集成

原文地址:https://www.cnblogs.com/smlile-you-me/p/14429457.html