2017-02-15 22 views
1

Я использую Postfix в моем local.I'm написанию сценария для получения отложенного/отсканированного почтового отчета на ежедневной основе. Если я прав, обычно журналы печатаются как столбцы в файле журнала.Извлечь конкретные столбцы в Postfix/var/log/maillog

Мое предложение: я хочу, чтобы grep в предыдущий день «на», «статус», «сказал», и это сообщение, например, «сказал: 550 Invalid Recipient». И дело в том же журнале печатается несколько раз, Но мне нужно grep любой из подобных журналов из всех.

Feb 13 13:40:35 ganga11 postfix/smtp [12098]: 3371F2BF52: to =, relay = none, delay = 1.2, delayays = 0.84/0.01/0.27/0.07, dsn = 5.1.1, status = (хозяин сказал: 550 5.1.1 Получатель не найден http://x.co/irbounce (в ответ на команду RCPT TO)

13 фев 13:40:35 ganga11 postfix/smtp [6923]: 3371F2BF52: to =, relay = none , delay = 1.5, задержки = 0.84/0/0.46/0.19, dsn = 5.0.0, статус = отскок (хозяин сказал: 550 Нет такого пользователя ([email protected] (в ответ на команду RCPT TO))

13 февраля 13:40:35 ganga11 postfix/smtp [29489]: 3371F2BF52: to =, relay = none, delay = 1.3, delayays = 0.84/0.01/0.38/0.1, dsn = 5.0.0, status = отскок (хост сказал: 550 # 5.1.0 Адрес отклонен (в ответ на команду RCPT TO)

13 февраля 08:14:45 ganga11 postfix/smtp [6736]: F093B2BCA3: to =, relay = none, delay = 6139, delayays = 6139/0.02/0.15/0, dsn = 4.4.1, статус = отложен (подключен к aaaaaa.co.in Connection отказано)

13 фев 13:40:36 ganga11 postfix/smtp [6940]: 3371F2BF52: to =, relay = none, delay = 2.3 , задержки = 0.84/0.01/0.17/1.3, dsn = 5.1.1, status = отскок (хозяин сказал: 550 5.1.1 Получатель не найден. http://x.co/irbounce (в ответ на команду RCPT TO)

13 фев 13:40:35 ganga11 postfix/smtp [6923]: 3371F2BF52: to =, relay = none, delay = 1.5, delayays = 0.84/0/0.46/0.23, dsn = 5.0.0, статус = отскок (хозяин сказал: 550 Нет такого пользователя ([email protected]) (в ответ на команду RCPT TO)

13 февраля 04:14:24 ganga11 postfix/smtp [6736]: F093B2BCA3: до =, реле = нет, задержка = 6139, задержки = 6139/0,02/0,15/0, dsn = 4.4.1, статус = отложен (подключиться к xyzz.com отказано в подключении)

Feb 13 17:14:11 ganga11 postfix/smtp [6736]: F093B2BCA3: to =, relay = none, delay = 6139, delayays = 6139/0.02/0.15/0, dsn = 4.4.1, status = отложен (подключиться к bbbbb .com Connection отказано)

+0

Hi kometen, Я пробовал с sed, awk и grep, но я не могу найти правильную команду. Это тот, который казался несколько, но извлекал все журналы. awk -F, '{print $ 7 $ 12}' /home/samplelog.txt | awk -F \ f = 14 -vt = 25 '{для (i = 14; i <= t; i ++) printf ("% s% s", $ i, (i == t)? "\ n": OFS)} '| sort | uniq – Narasimman

+0

Я предлагаю вам использовать grep для получения нужных строк и вырезать его, чтобы извлечь столбцы с параметром -f и использовать пробел в качестве разделителя. Где-то вроде «grep» foo | bar | baz »| cut -d "" -f 1,2,3 '. http://serverfault.com/ - лучшее место, чтобы спросить. – kometen

ответ

1

Вот что-то, что может вам помочь.

cat mail.log | grep "postfix/smtp" | grep -P 'status=(?!sent)' | 
sed "s/^.*: \(.\+\):.* to=<\(.\+\)>.* status=\([^ ]\+\) (\(.*\))$/[\1] <\2> \3: \4/" | 
sort | uniq 

grep "postfix/smtp" фильтрует сообщения, связанные с SMTP.

grep -P "status=(?\!sent)" фильтрует сообщения, имеющие статус кроме отправлен.

sed ... Экстракты идентификатор очереди, адрес получателя, статус и как сообщение Остатки, в статус.

sort | uniq фильтрует дубликаты записей.

+0

Привет, Джо, спасибо за ответ. Но кстати я получаю это, когда выполняю команду. Не могли бы вы исправить ее, что я пропустил? cat /home/samplelog.txt | grep "postfix/smtp" | grep -P "status = (? \! sent)" | sed "s /^.*: \ (. \ + \):. * to = <\(.\+\)>. * status = \ ([^] \ + \) (\ (. * \)) $/[\ 1] <\2> \ 3: \ 4/"| сортировать | uniq grep: непризнанный символ после (? или (? - – Narasimman

+0

Похоже, вы задохнулись от обратной косой черты. Изменяет ли второй grep значение 'grep -P 'status = (?! sent)'' help? Или статус 'grep -E ' = (отскок | отсроченный) »'?? – Joe

+0

Ahhhhh Man !!! Он работал как босс !!! Большое спасибо Джо :) Ты спас мою голову сегодня – Narasimman