#!/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
即使什么也没找到,它仍然会发送电子邮件。
什么是只有在某些东西被 grepped 时才发送的方法?
只需-E
在邮件命令中使用 switch:
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 将发送邮件。
如果不需要转发警报中邮件的任何部分,则无需使用pipe |
。
所以你可以这样使用条件:
#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
grep -q 'INFECTED|Vulnerable' &&
/bin/mail -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL
-q
开关,以确保grep
保持安静。
对于 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 表示已发送此类消息,并显示警告(传统上说“空消息正文;希望没关系”)。可以使用 nullbodymsg 变量设置警告的文本(见下文)。
如果 nullbody 未设置,邮件将默默地忽略此类消息。这在“crontab”文件中很有用,以避免在没有重要事件发生时发送邮件。例如,仅当实用程序 some-prog 在其标准输出上输出某些内容或错误时,下面的“crontab”条目才会发送邮件:
只需将上面的内容放在 cron 中以获取一些时间表:
*/5 * * * * some-prog 2>&1 | /bin/mail -E'set nonullbody' -s 'Periodic synchronization'
#!/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 的返回值),并根据它有条件地发送邮件。