Используя операцию grep для моего локального почтового ящика.

Я пытаюсь записывать каждое письмо, отправляемое в мой локальный почтовый ящик из задания cron, в другой txt файл. Когда я использую строку

mail | grep cron > cron_mail.txt

, операция не останавливается и создает пустой cron_mail.txt .

Как мне это исправить или есть более простой способ выполнить эту операцию в bash?

0
09.06.2017, 17:03
2 ответа

Похоже, что почта выводится в стандартный поток ошибок, поэтому она не передается в grep, так как передается только стандартный вывод.

Попробуйте mail 2>&1 | grep cron > cron_mail.txt

2 — это дескриптор файла стандартного потока ошибок, и с помощью приведенной выше команды он будет перенаправлен на стандартный вывод, который, в свою очередь, передается по конвейеру.

0
28.01.2020, 04:44

Если ваш локальный почтовый ящик представляет собой файл почтового ящика Беркли, попробуйте

grep '^From cron  ' "$MAIL"

. Это основано на том факте, что файлы mbox Беркли используют строку, начинающуюся с From, конверт отправителя адрес и два пробела (обычно за которыми следует время прибытия сообщения) в качестве разделительной строки перед каждым новым сообщением. (Следствием этого является то, что тело сообщения не может содержать пять символов From в начале строки в любом месте.) Если сообщения вашего демона cron содержат, например, доменное имя FQDN, вам, очевидно, потребуется адаптировать регулярное выражение.

Berkeley mbox раньше был вездесущим, но в наши дни многие системы используют другие форматы почтовых ящиков, многие из которых основаны на папках, а не на одном плоском файле. Для maildir, распространенного формата, особенно для почтовых ящиков IMAP, попробуйте

find new cur tmp -type f -exec grep -m 1 '^From:' /dev/null | grep cron

, который проверяет заголовок From: в каждом сообщении (это отличается от аналогично помеченной разделительной строки Беркли, которая не является заголовком почты в все).Вы должны запустить это в папке, которую хотите изучить, или включить полный путь к подкаталогам new, cur и tmp в аргументах каталога.

0
28.01.2020, 04:44

Теги

Похожие вопросы