CENTOS 5.x | Отправить почту
Всем привет,
Надеюсь, это простой вопрос. =) Мне нужно создать сводку отчетов о сообщениях, которые инициировали определенный код DSN. Например:
Jan 11 07:43:34 server-example sendmail[12732]: p937blksdh3: to=<someuser@recipientdomain.com>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=102537, relay=mta.recipientdomain.com. [12.34.56.78], dsn=5.7.1, stat=Service unavailable
Обычно я просто ищу эту информацию с помощью grep (что-то вроде: grep -i "dsn = 5.7.1" / var / log / maillog). Но проблема в том, что это возвращает только строку, подобную приведенной выше, и не сообщает мне отправителя сообщения.
В идеале я ищу однострочник, который может делать следующее:
Я новичок в написании сценариев / однострочников, поэтому я уверен, что, вероятно, есть более простой способ сделать это. Есть предположения?
Спасибо,
-M
Следующее будет искать ваш dsn, и если он соответствует dsn = 5.7.1, он напечатает msg-id и отправителя:
awk '{if($13 ~ /dsn\=5\.7\.1/)print $11 $7}' < /var/log/maillog
Я не совсем уверен, какие конкретные данные вы пытаетесь извлечь, кроме идентификатора сообщения и отправителя, но вы можете переключить print $11 $7
полей (11 долларов 7 долларов) путем ручного подсчета полей, разделенных пробелом, чтобы выбрать то, что вы хотите.
Это то, что вам было нужно?
Эрик
Не очень эффективно (2 сканирования файла журнала), но должно помочь:
awk '/dsn=5.7.1/ {print $ 6}' / var / log / maillog | во время чтения ID; сделать awk "/$ID.*from=/ {print \ $ 7}" / var / log / maillig; сделано