zoukankan      html  css  js  c++  java
  • Linux记录history命令

    对后面的(1)方法的提取文件改写法(强烈推荐)

    简单:https://www.cnblogs.com/andy9468/p/12751809.html

    记录存储位置:

    mkdir -p /usr/local/records

    chmod 777 /usr/local/records/
    chmod +t /usr/local/records/

    脚本存储位置:

    mkdir -p /usr/local/system_script

    编写脚本(记录用户执行过的命令):
    vim /usr/local/system_script/bash_record.sh

    # record cmd history
    if [ ! -d /usr/local/records/${LOGNAME} ]
    
    then
    
    mkdir -p /usr/local/records/${LOGNAME}
    
    chmod 300 /usr/local/records/${LOGNAME}
    
    fi
    
    export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
    export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}"
    
    export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print $1" "$2" "$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
    

    说明:history 1 | { read x cmd; echo “$cmd”; }的解释:http://www.mamicode.com/info-detail-2461141.html 

    使脚本可执行
    chmod +x /usr/local/system_script/bash_record.sh

    /etc/profile末尾追加内容:

    vim /etc/profile

    # myscript
    # record cmd history
    alias su='su -l '
    HISTTIMEFORMAT="%F %T "
    source /usr/local/system_script/bash_record.sh
    

    说明:

    定义su别名,是为了实现切换用户时,强制更新环境变量,避免环境变量未发生改变而引起的,切为低权限用户后,无写文件权限记录history日志。

    定义HISTTIMEFORMAT格式,是为了写入history日志时,有命令执行时的时间。将 HISTTIMEFORMAT 变量加入 /etc/profile 文件中,让它对所有用户永久生效。

    使配置生效
    source /etc/profile

    注意:上述脚本只能记录通过sshd服务端口(通常为22) 连接进入主机的用户操作,不能记录通过其他服务(如webmin)端口接入主机的用户操作。


    一些说明:

    记录脚本

    cd /usr/local/
    mkdir records
    chmod 777 records/
    chmod +t records/
    vim /etc/profile

    说明:

    o+t  

    https://www.iteye.com/blog/cocos-1089890

    https://blog.51cto.com/13868278/2149028

    (1)脚本一:推荐(按日期分割记录文件)

    # record cmd history
    if [ ! -d /usr/local/records/${LOGNAME} ]
    
    then
    
    mkdir -p /usr/local/records/${LOGNAME}
    
    chmod 300 /usr/local/records/${LOGNAME}
    
    fi
    
    
    export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
    export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}"
    
    
    #export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"
    
    export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print $1" "$2" "$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
    

    添加history中每个命令的执行时间:export HISTTIMEFORMAT='%F %T  '

    https://zhidao.baidu.com/question/1516093640707389740.html

    开发版本:计划实现以下功能:

    1、日志中记录命令执行所在路径。——已实现

    2、避免记录mysql明文密码。——待实现。已实现函数,未实现正确调用。

    脚本如下:

    # record cmd history
    
    # step 1. prepare function
    # function about hide password in cmd of mysql 
    replace_passwd(){
        #echo $*
        result=$(echo $* | grep "mysql") 
        if [ -n "$result" ]; then
            #echo "yes"
            rc=`echo $* |sed 's/-p.*$/-p***/g'`
        else
            #echo "no"
            rc=`echo $*`
        fi
        #echo $rc
        return $rc
    }
    
    
    # step 2. if it do not exist dir for saving logfile, creating the dir and named username
    if [ ! -d /usr/local/records/${LOGNAME} ]
    then
        mkdir -p /usr/local/records/${LOGNAME}
        chmod 300 /usr/local/records/${LOGNAME}
    fi
    
    # step 3. define few constants
    export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"`
    export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}"
     
    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'
    

      

    (2)脚本二:(测试用,不推荐,日志会不断累积)

    if [ ! -d /usr/local/records/${LOGNAME} ]
    
    then
    
    mkdir -p /usr/local/records/${LOGNAME}
    
    chmod 300 /usr/local/records/${LOGNAME}
    
    fi
    
    export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"
    
    export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print $1" "$2" "$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'
    

      

    source /etc/profile

    https://my.oschina.net/u/3866149/blog/3030842

    =======================================================================

    其他:

    美化shell:让Linux命令提示符输出完整路径,且有颜色。

    shell脚本:实现对登录主机失败10次以上的ip进行拒绝登录

  • 相关阅读:
    Effective Go(官方文档)笔记
    Python中的列表、元祖、字典
    obj-c编程15[Cocoa实例02]:KVC和KVO的实际运用
    HDU 3435A new Graph Game(网络流之最小费用流)
    蜗牛—Android基础之button监听器
    网络流小结
    Android 音频的播放之二MediaPlayer
    零基础学python-3.7 还有一个程序 python读写文本
    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第11章节--为Office和SP解决方式开发集成Apps Office的JavaScript对象模型
    jdk的动态代理源代码解析
  • 原文地址:https://www.cnblogs.com/andy9468/p/11571224.html
Copyright © 2011-2022 走看看