Answers:
output=$(grep line /var/log/file); [[ -n "$output" ]] && mail -s Log email@domain.tld
或者,您可以将其设置为Cron作业,然后如果产生任何输出,它将通过电子邮件发送给用户。您可以编辑/ etc / aliases文件(然后运行newaliases命令)以将邮件发送到不在框中的地址。
cron输入项前的内容(您将无法设置主题行
1 0 * * * grep line /var/log/file
或者,您可以获取ifne实用程序-这可能就是您想要的
grep行/ var / log / file | ifne邮件-s日志email@domain.tld
ifne命令可从epel库中获取centos和RHEL。我在网上找不到指向手册页的链接,但是有
ifne(1)
ifne(1)NAME ifne-如果标准输入不为空,则运行命令
概要ifne [-n]命令
描述仅当标准输入不为空时,ifne才运行以下命令。
选项-n反向操作。如果标准输入为空,请运行命令。
Note that if the standard input is not empty, it is passed through ifne in this case.
查找示例。名称核心| ifne邮件-s“找到核心文件”根目录
作者Copyright 2008 by Javier Merino
Licensed under the GNU GPL 2008-05-01 ifne(1)
ifne
可以moreutils
在ubuntu 的软件包中找到。不幸的是,该软件包还带来了parallel
与软件包parallel
命令冲突的问题parallel
。
“ man mail”告诉我,如果body为空,则-E参数将停止发送邮件。对我来说很好。
-E
如果外发消息的第一个或唯一消息部分不包含任何文本,请不要发送而是静默丢弃它,从而在程序启动时有效地设置了skipemptybody变量。这对于从cron(8)启动的脚本发送消息很有用。
mail
or mailx
命令。在bsd-mailx
和heirloom-mailx
一个包都提供mailx
与-E
选项描述。
grep "find me" /var/log/something | mail -s "That text you were looking for is now in the logs" -E mail@example.com