自定义日志:记录Linux主机操作
2023-09-14 08:59:05 时间
一、背景
Linux系统自带的shell窗口操作记录文件.bash_history,可以记录用户执行过的命令,但不足的是,记录的日志文件易于被删除,且信息量较少。有没有什么方式可以在各个Linux主机上留存shell窗口的操作记录,并且有丰富的说明信息(命令、执行人、执行时间、执行目录等)?
二、分析
考虑使用shell脚本来实现:
1、另存shell操作的日志内容
2、丰富日志内容的说明信息(命令、执行人、执行时间、执行目录等)
但不足的是,需要部署,机器少还好,可以单个部署,机器多了工作量就很大了,到时候应该考虑其他方式部署。
三、实现方案
(一)脚本准备
1、*.log 记录存储位置:
mkdir -p /usr/local/records
chmod 777 /usr/local/records/
chmod +t /usr/local/records/
2、*.sh 脚本存储位置:
mkdir -p /usr/local/system_script
3、编写脚本(记录用户执行过的命令):
vim /usr/local/system_script/bash_recorda.sh
# record cmd history # 1.prepare alias su='su -l ' HISTTIMEFORMAT="%F %T " # 2.mkdir if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi # 3.log format and record *.log export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"` export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}.log" export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(pwd) #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
(二)部署脚本
1、使脚本可执行
chmod +x /usr/local/system_script/bash_recorda.sh
2、/etc/profile末尾追加内容:
vim /etc/profile
source /usr/local/system_script/bash_recorda.sh
(三)查看效果
1、执行一些命令
2、查看命令记录
cd /usr/local/records/
ll
cd 对应用户文件夹
vim 对应*.log日志
相关文章
- [Linux]linux下取消用户名和密码直接登录
- [Linux]linux如何把文件切成多块
- 【学习总结】快速上手Linux玩转典型应用-第6章-linux常用命令讲解
- Linux中find常见用法示例
- Linux下使用mail命令发送邮件
- Linux 自动重启进程
- linux系统批量修改用户密码
- centos8(linux): nohup生成的日志切分
- Linux linux echo命令的-n、-e两个参数
- 【Linux】linux经常使用基本命令
- L82.linux命令每日一练 -- 第11章 Linux系统管理命令 -- dmidecode和lspci
- L79.linux命令每日一练 -- 第11章 Linux系统管理命令 -- sar和chkconfig
- L62.linux命令每日一练 -- 第九章 Linux进程管理命令 -- strace和ltrace
- L33.linux命令每日一练 -- 第五章 Linux信息显示与搜索文件命令 -- du和date
- Linux系统shell脚本之mysql的日志备份
- Linux系统的日志管理
- linux下常用压缩命令 tar压缩Linux解压 压缩Linux压缩Ubuntu压缩centos压缩解压gz txt.gz
- linux 修改文件时间
- Day 19 - 安装 AlexeyAB/darknet ON Amazon Linux 2
- 【Deepin 20系统】Linux系统自定义MATLAB启动快捷方式并发送到任务栏
- 完美解决linux编译动态库出现的问题:ERROR: ld.so: object LD_PRELOAD cannot be preloaded: ignored