linux - отправить электронное письмо, где body - это строка текста из файла - зависит от даты
Я хотел бы добавить задачу cron, которая отправляет электронное письмо на me@example.com один раз в день и содержит текстовую строку из файла в зависимости от даты в качестве тела сообщения.
Мой файл file.txt будет выглядеть так:
10-16-18 green
10-17-18 brown
10-18-18 blue
....
10-01-20 purple
например, дата 10-16-18 я получаю письмо с "коричневым" в теле. Файл может в конечном итоге иметь сотни строк.
1 ответ
Это вытянет нужную строку из файла и вернет остаток строки. Если совпадает более чем одна строка, он напечатает их все.
awk '$1 == "'`date '+%m-%d-%y'`'" { print substr($0, 10) }' file.txt | mail ...
Вы можете ограничиться только первым совпадением, добавив ;exit
перед }
,
Также 10
длина матча; если вы хотели целый год, вы можете изменить %y
в %Y
а также 10
в 12
,
Итак, чтобы сделать работу cron, скажем, в 6:00 утра, вы должны поместить это в ваш crontab:
0 6 * * * awk '$1 == "'`date '+%m-%d-%y'`'" { print substr($0, 10) }' file.txt | mail -s SUBJECT me@example.com