Я смог получить мой скрипт, чтобы успешно отправлять мне по электронной почте через регулярные промежутки времени с помощью другого пользователя здесь. Мой следующий вопрос: я бы хотел, чтобы он ТОЛЬКО посылал мне по электронной почте, если вывод не равен нулю.Предотвращение отправки электронной почты, если 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
Текущий кронтаб:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/me/crontask
Может быть некоторый «расширенный» синтаксис, который вы можете применить, но простым решением является перенаправление вывода nawk в tmp-файл, затем используйте 'if [[-s tmpFile]]; затем mailx -S ... user1 @ mycomp.com, usr2 @ xyz.com
shellter
Так что я бы добавил «>/home/me/crontmp» в конец скрипта nawk вместо отправки электронной почты. И затем на второй строке добавьте «if [[-s/home/me/crontmp]], затем отправьте сообщение« Выходной тест »[email protected] home/me/crontmp; rm/home/me/crontmp; fi "? – demonic240
вот что я попробую, хотя решение Гленна Джекмана (как обычно) отлично тоже. Удачи! – shellter