自定义日志:记录Linux主机操作

一、背景

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日志

posted @ 2020-04-22 14:18  安迪9468  阅读(669)  评论(0编辑  收藏  举报