我想写一个简单的脚本来提醒我日志是否改变。 为此,我使用grep来查找我感兴趣的行。现在,它的工作原理是这样的:
grep line /var/log/file | mail -s Log [email protected]
问题是,即使没有find匹配的行,这也会发送邮件。 mailutils的mail实用程序似乎没有开关,告诉它放弃有空的邮件。
有没有一个简单快捷的方法呢?
output=$(grep line /var/log/file); [[ -n "$output" ]] && mail -s Log [email protected]
或者你可以把它做成一个cron工作,然后如果它产生任何输出,它将通过电子邮件发送给用户。 您可以编辑/ etc / aliases文件(然后运行newaliases命令)发送邮件到不在框中的地址。
cron条目的ex(你将不能设置主题行
1 0 * * * grep line /var/log/file
或者你可以得到的工具 – 这可能是你想要的
grep line / var / log / file | ifne mail -s Log [email protected]
ifne命令它可以从epel回购centos和RHEL。 我找不到到在线手册页的链接,但它在那里
ifne(1)
ifne(1)名称ifne – 如果标准input不为空,则运行命令
大纲ifne [-n]命令
说明当且仅当标准input不为空时,ifne运行以下命令。
选项-n反向操作。 如果标准input是强制的,则运行该命令。
Note that if the standard input is not empty, it is passed through ifne in this case.示例查找。 名核心| ifne邮件-s“find核心文件”root
作者Javier Merino版权所有2008
Licensed under the GNU GPL 2008-05-01 ifne(1)
“man mail”告诉我,如果body是空的,参数-E会停止发送邮件。 对我来说工作得很好。
-E
如果传出的消息在其第一个或唯一的消息部分中不包含任何文本,则不要发送它,而是静静丢弃它,在程序启动时有效地设置skipemptybodyvariables。 这对从cron(8)启动的脚本发送消息很有用。