如果发现了某些内容,请点击并发送电子邮件

Ama*_*ith 4 linux bash cron grep

#!/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
Run Code Online (Sandbox Code Playgroud)

即使没有找到任何内容,它仍会发送电子邮件.

如果有东西被掠过,那么只能发送什么?

F. *_*uri 6

这可能......

只需-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
Run Code Online (Sandbox Code Playgroud)

或者将支票crontab自动处理,每天一次:

@daily  ( /usr/src/chkrootkit-$VERSION/chkrootkit ) | grep 'INFECTED|Vulnerable'
Run Code Online (Sandbox Code Playgroud)

如果命令输出某事,Cron将发送邮件.

但是,在重新阅读之后

如果不需要在警报中转发邮件的任何部分,则无需使用管道 |.

所以你可以用这种方式使用条件:

#!/bin/bash
( /usr/src/chkrootkit-$VERSION/chkrootkit ) | # Binary
    grep -q 'INFECTED|Vulnerable' &&
    /bin/mail -s 'CHROOTKIT Weekly Run ($SERVERNAME)' $EMAIL
Run Code Online (Sandbox Code Playgroud)

-q开关,grep确保保持沉默.

  • 不幸的是,常见的GNU Mailutils 2.2版本的邮件使用-E开关来执行命令,并且没有等同于你所描述的"不要发送带有空体的消息"开关. (3认同)