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 Who When
创建 武汉-运维-磨渣 2019-11-06