Перейти к содержимому

Фото
- - - - -

Bash scripting for dummy...


  • Вы не можете создать новую тему
  • Please log in to reply
2 ответов в этой теме

#1 leonzi

leonzi
  • Пользователь
  • 3 сообщений

Отправлено 07 Декабрь 2014 - 18:16

Всем доброго времени суток.
 
У меня "небольшая" проблемка... На работе надо проанализировать энное количество почтовых логов, и надо это сделать быстро... Умные люди посоветовали заюзать баш скрипт, но увы я не могу найти как его написать... 
Помогите плиз (и плиз сильно не пинать, я тут новенький :) )....
 
В общем из этого:
[root@test666 ~]# grep "657167B0024B" /var/log/test/mx.log
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/smtpd[21149]: 657167B0024B: client=unknown[::1]
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/cleanup[21528]: 657167B0024B: warning: header Subject: Krediit from unknown[::1]; from=<test@mail.com> to=<receiver@mail.ru> proto=ESMTP helo=<data.server.eu>
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/cleanup[21528]: 657167B0024B: message-id=<fsdkfjsdf.fgsjkldfhgklfhsg@kfjdshf.fdf.er>
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/qmgr[19278]: 657167B0024B: from=<test@mail.com>, size=571, nrcpt=1 (queue active)
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/qmgr[19278]: 657167B0024B: removed
13:00:03 (2014-11-30) mx.server.eu [mail.info] postfix/smtp[21452]: 657167B0024B: to=<receiver@e.mail.ru>, orig_to=<receiver@mail.ru>, relay=antivirus.server.eu[127.0.0.1]:25, delay=0.12, delays=0.01/0/0/0.1, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=34593-01, from MTA: 250 2.0.0 Ok: queued as 7780B3402030)
[root@test666 ~]#
 
Надо получить это:
13:00:03 (2014-11-30) received by mx.server.eu id:657167B0024B status:sent from:test@mail.com to:receiver@mail.ru
13:00:03 (2014-11-30) passed to antivirus.server.eu id:7780B3402030 status:sent
 
Может кто-то может навести на верную мысль? ссылку? А то уже задолбался гуглить... :(
 
 
Заранее спасибо :)

  • 0

#2 Седой Ёжик

Седой Ёжик
  • Пользователь
  • 59 сообщений

Отправлено 08 Декабрь 2014 - 17:18

А что конкретно тебе надо сделать?  Вытянуть все отправленые? По ID?

По особому отформатировать лог?


  • 0

#3 Sergio

Sergio
  • Постоялец
  • 2 987 сообщений

Отправлено 08 Декабрь 2014 - 22:57

Опиши подробнее, что надо.

Надо 6 строк преобразовать в 2? Или скрипт, который вылавливает все ID, сортирует и преобразует в другой формат?

Не очень понятно, какого совета ты ждешь. Примеров программирования на баше в сети полно. Советую начать с изучения фильтров (grep и cut для начала, а вообще http://en.wikipedia....lter_(software)), и конвейеров (unix pipes).  Ну и этого уже достаточно, чтобы написать несложный парсер.

 

А если все таки нужна скорость, то bash - не лучший выбор.


  • 0