2016-10-11 149 views
0

我创建了.sh文件来grep日志中的特定单词,并将邮件发送到特定的emailID(设置Cronjob每1小时运行一次该脚本)。它按预期工作,但问题是如果没有错误,我也收到空邮件。在Linux中使用shell脚本监控日志并发送警报邮件

需要获取邮件,如果我们发现错误和DBError文件有内容。请帮助我解决这个问题。

#!/bin/bash 

if [ ! -e DBErrors ] ; then 
     grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > DBErrors 
     mail -s "ALERT: sqlException" [email protected] < DBErrors 
else 
    comm -23 <(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log) DBErrors | mail -s "ALERT: sqlException" [email protected] 
    grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > DBErrors 
fi 

感谢 贾亚拉姆

+0

你的意思是你需要在'if'块或者'else'中发送一封邮件吗? – MarcoS

回答

0

你可以试试这个;

#!/bin/bash 
dbErrors="/tmp/DBErrors" 
if [ ! -e "$dbErrors" ]; then 
     grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > $dbErrors 
     mailbody=$(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log); [[ -n "$mailbody" ]] && mail -s "ALERT: sqlException" [email protected] 
else 
     mailbody=$(comm -23 <(grep "sqlException" /opt/apps/cms/logs/cms-runtime.log| sort -n) <(sort -n "$dbErrors")); [[ -n "$mailbody" ]] && mail -s "ALERT: sqlException" [email protected] 
     grep "sqlException" /opt/apps/cms/logs/cms-runtime.log > $dbErrors 
fi 
+0

抱歉还是收到空邮件 –

+0

@JayaramPonnusamy:我更新了ans。你可以试试这个; –

+0

嗨穆斯塔法,仍然获得相同的“空身材信息” –

相关问题