我写了一个脚本,它只在半小时内轮询一个日志文件条目,如果发现错误,就发送一封电子邮件。我已经安排这个脚本每半小时在crontab中运行。
下面是剧本。但是这个脚本不像我想要的.For前任那样工作。如果它在上午11:30运行,则应扫描日志,时间为上午11:00至11:30之间。相反,它正在扫描文件中的"00:00“或"30:00”。我想,我在应用正则表达式时犯了一些错误,有人能帮忙吗?
blogs=/opt/docs/datapower/prod/business.log
slogs=/opt/docs/datapower/prod/system.log
starttime=$(date +'%H')
currmin=$(date +'%M')
curdate=`date|cut -d' ' -f5`
echo $(date)
if [ $currmin -le 29 ] && [ $starttime -ne 00 ] ; then
starttime1=`echo "$(date +'%H') - 1" | bc`
logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"
echo $logtime
elif [ $currmin -le 29 ] && [ $starttime -eq 00 ] ; then
logtime="23:[3-5][0-9]"
echo $logtime
else
logtime="$starttime"
logtime="$logtime:[0-2][0-9]"
echo $logtime
fi
if ( grep "$logtime" $slogs | egrep "AAA Authentication Failure|AAA Authorization Failure") > dptest 2>&1;then
Do something
fi 下面是示例日志条目
Nov 20 06:06:58 business-log-sta [DP-Domain-STAGING][0x80000001][business-log][info] mpgw(GenServiceMPG): trans(31513092)[request]: AAA Authentication failure/>发布于 2014-11-20 15:52:40
您的代码在我的系统上工作,我遇到的唯一问题是"AAA身份验证失败“是在代码中用大写字母'F‘写的,而在日志文件中则是小写'f’。
您也可以通过更改代码行来减少代码
logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"敬logtime="$starttime1:[3-5][0-9]"。
编辑:如果您需要,我可以提供在我的系统上工作的脚本的示例输出。
https://stackoverflow.com/questions/27042960
复制相似问题