Запретить отправку электронной почты, если nawk возвращает null
Мне удалось заставить мой сценарий успешно отправлять мне электронные письма через регулярные промежутки времени с помощью другого пользователя здесь. Мой следующий вопрос заключается в том, что я хотел бы, чтобы он ТОЛЬКО отправил мне электронное письмо, если результат не нулевой.
У меня настроен nawk, чтобы отправить мне по электронной почте вывод, и скрипт настроен на запуск каждые 5 минут через crontab. Из-за количества файлов журнала это будет означать, что я получу 9 электронных писем каждые 5 минут, которые взорвут мой почтовый ящик.
Текущий скрипт:
nawk '$0~s{for(c=NR-b;c<=NR+a;c++)r[c]=1}{q[NR]=$0}END{for(c=1;c<=NR;c++)if(r[c])print q[c]}' b=4 a=4 s="Bind value for HASCHILDREN = 0" filename | mail -s "Output from crontask" myemail
Текущий crontab:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/me/crontask
2 ответа
Чтобы проверить вывод команды nawk, вам нужно сохранить ее где-нибудь. Я бы порекомендовал вам использовать переменную:
output=$(
nawk '
$0 ~ s {for (c=NR-b; c<=NR+a; c++) r[c]=1}
{q[NR] = $0}
END {for (c=1; c<=NR; c++) if (r[c]) print q[c]}
' b=4 a=4 s="Bind value for HASCHILDREN = 0" filename
)
[[ "$output" ]] && mail -s "Output from crontask" me@example.com <<< "$output"
Я предполагаю, что ваша оболочка - bash.
Используя совет Шелтера. Я смог вывести результаты во временный файл, а затем выполнил его оператор if/then, чтобы отправить электронное письмо самому, если оно не было нулевым. Я подтвердил, что это сейчас работает.