正则表达式的问题

时间:2014-11-20 15:12:44

标签: bash shell solaris

我编写了一个脚本,仅在过去半小时内轮询日志文件条目并发送电子邮件,如果发现错误。我已安排此脚本每半小时在crontab中运行。

以下是脚本。但是这个脚本没有按照我的意愿工作。如果它在上午11:30运行,它应该扫描日志,持续时间为上午11:00:00到11:30:00。相反,它也在扫描文件“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/>

1 个答案:

答案 0 :(得分:0)

您的代码在我的系统上运行,我遇到的唯一问题是“AAA身份验证失败”在代码中写有大写“F”,在日志文件中写有小写“f”。

您也可以通过更改

等行来减少代码
logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"

logtime="$starttime1:[3-5][0-9]"

编辑:如果您愿意,我可以提供在我的系统上运行的脚本的示例输出。