output=$(grep line /var/log/file); [[ -n "$output" ]] && mail -s Log email@domain.tld
Или вы можете превратить это в работу cron, а затем, если она выдаст какой-либо вывод, она отправит электронное письмо пользователям. Вы можете отредактировать файл / etc / aliases (а затем запустить команду newaliases), чтобы отправлять почту по адресу, не указанному в коробке.
Ex of cron entry (Вы не сможете установить строку темы, хотя
1 0 * * * grep line /var/log/file
Или вы можете получить утилиту ifne - это, вероятно, то, что вы хотите
grep line / var / log / file | ifne mail -s Log email@domain.tld
Команда ifne доступна в репозитории Epel для Centos и RHEL. Я не могу найти ссылку на справочную страницу в Интернете, но она есть
ifne (1)
ifne (1)
NAME ifne - Запустить команду, если стандартный ввод не пуст
SYNOPSIS ifne [-n] команда
ОПИСАНИЕ ifne выполняет следующую команду тогда и только тогда, когда стандартный ввод не пуст.
ОПЦИИ -n Обратная операция. Запустите команду, если стандартный ввод пуст.
Note that if the standard input is not empty, it is passed
through ifne in this case.
ПРИМЕР НАЙТИ. ядро | ifne mail -s "Основные файлы найдены" root
АВТОР Copyright 2008 Хавьер Мерино
Licensed under the GNU GPL
2008-05-01 ifne(1)
ifne
находится вmoreutils
пакете в Ubuntu. К сожалению, этот пакет также приводит кparallel
конфликту сparallel
командой изparallel
пакета."man mail" говорит мне, что аргумент -E останавливает отправку почты, если тело пусто. у меня отлично работает
источник
mail
или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
См. Https://unix.stackexchange.com/a/100720/27458.
Просто используйте ifne :
источник