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