[转]shell脚本打印⽇志⽅法
该⽂章转⾃:blog.csdn/wylfengyujiancheng/article/details/50019299
shell脚本返回执行结果------------------------------------------------------------------------------------
在shell脚本执⾏过程中如果没有⽇志记录,特别是脚本⽐较长的情况下在执⾏完再定位问题很难发现问题原因,因此在脚本中增加⽇志显得⼗分重要。如何在⽇志中记录是哪个⽤户什么时间执⾏的哪个脚本,执⾏结果⼜是什么呢?下⾯介绍⽇志打印⽅法
example 1
调⽤log_info函数,如果希望只记录相关信息,不对命令执⾏结果进⾏判断
判断/etc/passwd是否存在,如果存在就记录⼀条⽇志“/etc/passwd is exist.”
if [ -f /etc/passwd ]
then
echo -e "\033[32m /etc/passwd is exit \033[0m"
log_info "/etc/passwd is exist."
fi
1
2
3
4
5
6
example 2
调⽤fn_log函数,如果命令执⾏成功就回显绿⾊信息,失败回显红⾊信息。并在⽇志中记录成功或失败信息。
rm -f /tmp/messages && cp -a /var/log/messages /tmp
fn_log "rm -rf /tmp/message && cp -a /var/log/message /tmp"
ping -c 3 10.10.10.10
fn_log "ping -c 3 10.10.10.10 "
1
2
3
4
5
example 3
如果脚本在执⾏过程中⽤户按了CTR+C 终⽌脚本执⾏,回显“DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!!”,并在⽇志中记录。记录⽇志函数代码如下:
#!/bin/bash
#log path is /var/log/openstack-kilo
#if commod execute sucessed,it will return 0 else return 1
# Copyright 2014 Intel Corporation, All Rights Reserved.
function log_info ()
{
if [ -d /var/log ]
then
mkdir -p /var/log
fi
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo "${DATE_N} ${USER_N} execute $0 [INFO] $@" >>/var/log/openstack-kilo #执⾏成功⽇志打印路径
}
function log_error ()
{
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo -e "\033[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ \033[0m" >>/var/log/openstack-kilo #执⾏失败⽇志打印路径
}
function fn_log () {
if [ $? -eq 0 ]
then
log_info "$@ sucessed."
echo -e "\033[32m $@ sucessed. \033[0m"
else
log_error "$@ failed."
echo -e "\033[41;37m $@ failed. \033[0m"
exit 1
fi
}
trap 'fn_log "DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!! "' 2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论