zoukankan      html  css  js  c++  java
  • 自定义日志:记录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日志

  • 相关阅读:
    编写你自己的单点登录(SSO)服务
    SignalR + KnockoutJS + ASP.NET MVC4 实现井字游戏
    Quartz使用总结
    Quartz.Net入门
    ASP.NET批量下载文件的方法
    Asp.Net文件的上传和下载
    AOP实践—ASP.NET MVC5 使用Filter过滤Action参数防止sql注入,让你代码安全简洁
    ASP.NET MVC4中的异步控制器
    Mybatis表关联一对多、多对一、多对多
    Xamarin android使用Sqlite做本地存储数据库
  • 原文地址:https://www.cnblogs.com/andy9468/p/12751809.html
Copyright © 2011-2022 走看看