linux系统history记录保存用户操作日志,登陆时间,防止会话退出时覆盖
以下是代码:
#说明: /etc/profile 中结尾添加如果下指令
#保存并执行如下使之生效:source /etc/profile
#history
#HISTFILESIZE:表示文件的最大大小,默认也是1000,可以自行设置;
export HISTFILESIZE=100000
#HISTSIZE:表示最多可以存多少条命令(先进先出),可以在/etc/bashrc和~/.bash_profile里面设置(1000000不会报错)。
export HISTSIZE=10000
#HISTTIMEFORMAT(hist-time-format):记录命令执行的时间格式(存到HISTFILE的为%s的格式),如果不设置此变量HISTFILE文件中将不会记录命令执行的时间戳;
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S-
U
S
E
R
I
P
−
USER_IP-
USERIP−USER]"
#为防止会话退出时覆盖其他会话写到HISTFILE的内容,可以在/etc/bashrc中加入以下内容:
shopt -s histappend
#每次条命令执行完后立即写入HISTFILE,无需等待退出会话。可以在bashrc中加入以下内容(PROMPT_COMMAND即命令行提示符):
export PROMPT_COMMAND=“history -a”
#获取用户IP
USER_IP=who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'
#日志生成目录
HISTDIR=/var/log/history
if [ -z $USER_IP ]
then
USER_IP=hostname
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d
H
I
S
T
D
I
R
/
HISTDIR/
HISTDIR/{LOGNAME} ]
then
mkdir -p
H
I
S
T
D
I
R
/
HISTDIR/
HISTDIR/{LOGNAME}
chmod 300
H
I
S
T
D
I
R
/
HISTDIR/
HISTDIR/{LOGNAME}
fi
DT=date +%Y%m%d_%H%M%S
export
#HISTFILE:设置历史文件名,默认为~/.bash_history,如果想要另外指定地方可以手工设置;
HISTFILE="
H
I
S
T
D
I
R
/
HISTDIR/
HISTDIR/{LOGNAME}/
U
S
E
R
I
P
{USER_IP}
USERIP{LOGNAME}.history.$DT"
#生成日志目录
chmod 600
H
I
S
T
D
I
R
/
HISTDIR/
HISTDIR/{LOGNAME}/history 2>/dev/null
#生成目录效果#文件名生成效果
#查看生成文件