#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
grep 'INFECTED|Vulnerable' | # Only get found issues
/bin/mail -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL # Send EMail
即使没有找到任何内容,它仍会发送电子邮件。
只有在某些东西被掠过时才会发送什么方式?
答案 0 :(得分:6)
只需在邮件命令中使用-E
开关:
man -Pcol\ -b mail | grep empty
-E Don't send messages with an empty body.
#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
grep 'INFECTED|Vulnerable' | # Only get found issues
/bin/mail -E -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL # Send EMail
或将支票放入crontab
进行自动处理,每天一次:
@daily ( /usr/src/chkrootkit-$VERSION/chkrootkit ) | grep 'INFECTED|Vulnerable'
如果命令输出,Cron将发送邮件。
如果警报中不需要转发邮件的任何部分,则无需使用管道 |
。
所以你可以用这种方式使用 condition :
#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
grep -q 'INFECTED|Vulnerable' &&
/bin/mail -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL
-q
切换到grep
可确保保持安静。
答案 1 :(得分:4)
对于GNU Mailutils,您可以使用 -E'set nonullbody'执行类似的操作:
grep whatever wherever | mailx -E'set nonullbody' -s EMAIL_SUBJECT your_email_address@example.com
请参阅http://mailutils.org/manual/html_section/mail.html: nullbody
类型:布尔
默认值:True控制邮件是否接受空主体的邮件。默认值true表示发送此类消息,并显示警告(传统上称为“Null消息正文;希望没问题”)。可以使用nullbodymsg变量设置警告文本(见下文)。
如果未设置nullbody,邮件将默默忽略此类消息。这在'crontab'文件中很有用,可以避免在没有重要信息发送时发送邮件。例如,下面的'crontab'条目仅在实用程序some-prog输出标准输出或错误时发送邮件:
将上述内容放入cron中以获取某些时间表:
*/5 * * * * some-prog 2>&1 | /bin/mail -E'set nonullbody' -s 'Periodic synchronization'
答案 2 :(得分:1)
#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
grep 'INFECTED|Vulnerable' # Only get found issues
if [ $? -eq 0 ]
/bin/mail -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL # Send EMail
fi
grep如果找到匹配则返回非零退出代码,否则返回0。我们只需要检查最后一个返回值(即grep的返回值),并根据该值有条件地发送邮件。