zoukankan      html  css  js  c++  java
  • history命令的优化

    前言

    默认的history记录的信息有限,我们对这个进行一定的扩充

    我们看下大概哪几个需求

    • 记录用户登陆的ip
    • 记录用户的名称
    • 记录执行命令的时间

    具体实现

    我们看下应该怎么做这个,尽量在不改变用户的习惯的情况下,既保留了相关的信息,又能直接使用

    将历史命令缓冲区的命令写入到历史命令文件中

    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
    

    指定history的命令的日期的显示

    export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" 
    

    获取当前的终端的登陆的IP

    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
    

    指定存储history的目录

    HISTDIR=/var/log/.hist
    

    如果没有获取到ip就用主机名代替

    if [ -z $USER_IP ]; then                                                      
      USER_IP=`hostname`                                                         
    fi     
    

    如果没有目录就创建目录

    if [ ! -d $HISTDIR ]; then                                                 
      mkdir -p $HISTDIR                                                        
      chmod 777 $HISTDIR                                                        
    fi    
    

    如果没有记录文件,就创建记录文件

    if [ ! -d $HISTDIR/${LOGNAME} ]; then                                        
      mkdir -p $HISTDIR/${LOGNAME}                                               
      chmod 300 $HISTDIR/${LOGNAME}                                              
    fi     
    

    创建4096条历史记录的命令

    export HISTSIZE=4096                                    
    

    最终修改

    #history                                                                      
    PROMPT_COMMAND="history -a; $PROMPT_COMMAND"                                 
    USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` 
    HISTDIR=/var/log/.hist                                                       
    if [ -z $USER_IP ]; then                                                     
      USER_IP=`hostname`                                                         
    fi                                                                           
    if [ ! -d $HISTDIR ]; then                                                   
      mkdir -p $HISTDIR                                                         
      chmod 777 $HISTDIR                                                         
    fi                                                                           
    if [ ! -d $HISTDIR/${LOGNAME} ]; then                                        
      mkdir -p $HISTDIR/${LOGNAME}                                                
      chmod 300 $HISTDIR/${LOGNAME}                                              
    fi                                                                          
    export HISTSIZE=4096                                                         
    export HISTFILE="$HISTDIR/${LOGNAME}/history"                    
    export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S] [$USER_IP] [${LOGNAME}] "
    chmod 600 $HISTDIR/${LOGNAME}/history 2>/dev/null                            
    

    更新历史

    why when
    创建 2019年09月01日
    更新 2019年12月9日
  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575459.html
Copyright © 2011-2022 走看看