一、为了更好的管理服务器,分配了不同的用户信息,记录不同的用户服务器操作日志
遇见问题 1、windows编辑脚本,linux运行报错
history.sh: line 6: $'\r': command not found
2、当前操作用户可以查看自己日志文件,并修改 目录属性设置权限为300,可以在目录中创建日志文件 文件书香设置权限为200,只可以在文件中新增日志,不可查看和删除 3、测试过程中出现,刚登录服务器,提示文件不存在
-bash:目录/用户/日志文件: No such file or directory
二、shell脚本
1、定义储存的日志目录,根据登录用户创建目录,每天生成一个文件
user=`whoami`
hislog_dir="/var/log/history/${user}"
export HISTFILE="${hislog_dir}/$(date '+%F').his"
2、判断目录是否存在,如果不存在创建目录,并赋当前用户权限 可写可执行(2+1),禁止当前用户查看日志,删除日志
[ -d ${hislog_dir} ] || mkdir -p -m 300 ${hislog_dir}
3、创建日志文件,并赋当前操作用户权限,可写(2)
[ -e ${hislog_dir}/$(date '+%F').his ] || touch ${hislog_dir}/$(date '+%F').his
[ -x ${hislog_dir}/$(date '+%F').his ] || chmod 200 -R ${hislog_dir}/$(date '+%F').his
4、记录当前用户,当前文件目录的操作命令
export HISTTIMEFORMAT='%F %T '
export PROMPT_COMMAND='user=$(who am i | sed "s/[ ][ ]*/ /g"); history 1 | { read x date time cmd; echo "${date} ${time} ${user} $(whoami) $(pwd) ${cmd}";} >> $HISTFILE'
三、整体代码
整体代码
user=`whoami`
hislog_dir="/var/log/history/${user}"
[ -d ${hislog_dir} ] || mkdir -p -m 300 ${hislog_dir}
export HISTFILE="${hislog_dir}/$(date '+%F').his"
[ -e ${hislog_dir}/$(date '+%F').his ] || touch ${hislog_dir}/$(date '+%F').his
[ -x ${hislog_dir}/$(date '+%F').his ] || chmod 200 -R ${hislog_dir}/$(date '+%F').his
export HISTTIMEFORMAT='%F %T '
export PROMPT_COMMAND='user=$(who am i | sed "s/[ ][ ]*/ /g"); history 1 | { read x date time cmd; echo "${date} ${time} ${user} $(whoami) $(pwd) ${cmd}";} >> $HISTFILE'
日志文件
2022-08-31 10:27:04 gitAuto pts/10 2022-08-31 10:26 (IP) gitAuto /home cd ../
2022-08-31 10:27:04 gitAuto pts/10 2022-08-31 10:26 (IP) gitAuto /home ll
2022-08-31 10:27:08 gitAuto pts/10 2022-08-31 10:26 (IP) gitAuto / cd ..
四、遇到问题
1、windows编辑脚本,linux运行报错
history.sh: line 6: $'\r': command not found
原因windows的换行“回车(CR)”和“换行(LF)”,linux的“换行(LF)”,sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令
解决办法
在Linux上编辑文件,set ff 查看当前文件编辑系统,set ff=unix,设置当前文件编辑系统
vim history.sh
:set ff
fileformat=dos
:set ff=unix
fileformat=unix
2、当前操作用户可以查看自己日志文件,并修改
目录属性设置权限为300,可以在目录中创建日志文件
[ -d ${hislog_dir} ] || mkdir -p -m 300 ${hislog_dir}
文件书香设置权限为200,只可以在文件中新增日志,不可查看和删除
[ -x ${hislog_dir}/$(date '+%F').his ] || chmod 200 -R ${hislog_dir}/$(date '+%F').his
3、测试过程中出现,每天第一次登录服务器,提示文件不存在 No such file or directory
-bash:目录/用户/日志文件: No such file or directory
chmod: cannot access '目录文件': No such file or directory
[ -e ${hislog_dir}/$(date '+%F').his ] || touch ${hislog_dir}/$(date '+%F').his
|