遇见问题
1、windows编辑脚本,linux运行报错
history.sh: line 6: $'\r': command not found
2、当前操作用户可以查看自己日志文件,并修改
目录属性设置权限为300,可以在目录中创建日志文件
文件书香设置权限为200,只可以在文件中新增日志,不可查看和删除
3、测试过程中出现,刚登录服务器,提示文件不存在
-bash:目录/用户/日志文件: No such file or directory
user=`whoami`
hislog_dir="/var/log/history/${user}"
# 创建存放日志文件
export HISTFILE="${hislog_dir}/$(date '+%F').his"
[ -d ${hislog_dir} ] || mkdir -p -m 300 ${hislog_dir}
# -x 判断文件是否有执行权限;-w 文件是否有写入权限; -r 文件是否有读取权限
[ -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'
# 创建目录
user=`whoami`
hislog_dir="/var/log/history/${user}"
[ -d ${hislog_dir} ] || mkdir -p -m 300 ${hislog_dir}
# 创建存放日志文件
export HISTFILE="${hislog_dir}/$(date '+%F').his"
# -x 判断文件是否有执行权限;-w 文件是否有写入权限; -r 文件是否有读取权限
[ -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 ..
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
# 提示当前信息,表示windows系统编辑
fileformat=dos
# 设置当前文件的编辑系统
:set ff=unix
# 再查看当前文件的编辑系统
fileformat=unix
目录属性设置权限为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
-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