Помогите написать скрипт

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

Помогите написать скрипт

Непрочитанное сообщение yurko-i » 2013-08-14 11:19:51

Привет всем.
Хочу выдернуть адреса из лога Postfix:

Код: Выделить всё

Aug 14 11:02:36 core postfix/pipe[80953]: BCF69F7408: to=<info@domen.com.ua>, relay=dovecot, delay=0.07, delays=0.06/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Aug 14 11:02:36 core postfix/pipe[80953]: BCF69F7408: to=<reklama@domen.com.ua>, relay=dovecot, delay=0.07, delays=0.06/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Aug 14 11:03:01 core postfix/pipe[80897]: 5066CF741C: to=<office@domen.com.ua>, relay=dovecot, delay=0.03, delays=0.01/0/0/0.01, dsn=2.0.0, status=sent (delivered via dovecot service)
Вот то что уже есть:

Код: Выделить всё

#!/bin/sh

tail -f /var/log/maillog | grep --line-buffered 'status=sent' |
while read line
do
    i=$(echo $line | awk -FS '{print $1}')
    echo $i
done

Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: Помогите написать скрипт

Непрочитанное сообщение rmn » 2013-08-14 11:44:16

Код: Выделить всё

cat /var/log/maillog | grep "status=sent" | awk '{print $7}' | sed -e 's/to=<//' -e 's/>,//'

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

Re: Помогите написать скрипт

Непрочитанное сообщение yurko-i » 2013-08-14 12:10:09

rmn писал(а):

Код: Выделить всё

cat /var/log/maillog | grep "status=sent" | awk '{print $7}' | sed -e 's/to=<//' -e 's/>,//'
Большое спасибо, работает.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Помогите написать скрипт

Непрочитанное сообщение kpp » 2013-08-15 10:10:28

Мда, использовали все что есть ;)
Может чуть проще?

Код: Выделить всё

sed -n '/ status=sent /s/.* to=<\([^>]*\)>.*/\1/p' /var/log/maillog
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: Помогите написать скрипт

Непрочитанное сообщение rmn » 2013-08-15 11:04:06

kpp писал(а):Мда, использовали все что есть ;)
Может чуть проще?

Код: Выделить всё

sed -n '/ status=sent /s/.* to=<\([^>]*\)>.*/\1/p' /var/log/maillog
unix-way же. Пачка программ, каждая выполняет свою часть работы и все в конвеерах :)
А на счет простоты (для понимания, в частности) - наличие регулярок сразу выкидывает любой код из топ10

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Помогите написать скрипт

Непрочитанное сообщение kpp » 2013-08-15 11:13:30

rmn писал(а):
kpp писал(а):Мда, использовали все что есть ;)
Может чуть проще?

Код: Выделить всё

sed -n '/ status=sent /s/.* to=<\([^>]*\)>.*/\1/p' /var/log/maillog
unix-way же. Пачка программ, каждая выполняет свою часть работы и все в конвеерах :)
А на счет простоты (для понимания, в частности) - наличие регулярок сразу выкидывает любой код из топ10
Я не против, но такую простую задачу решать 4-мя утилитами, в том числе awk и sed? :shock:
Если для простоты и минимум регулярок:

Код: Выделить всё

cat /var/log/maillog | grep -o " to=<.*>.* status=sent " | cut -d"<" -f2 | cut -d">" -f1
или

Код: Выделить всё

awk '{if($0 ~ / status=sent /){ gsub("to=<","",$7); gsub(">,","",$7); print $7 }}' /var/log/maillog
По поводу понимания отдельная история.
Обычно берут готовое решение и зачем какое-то "понимание"? :-D
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

Re: Помогите написать скрипт

Непрочитанное сообщение yurko-i » 2013-08-23 12:45:21

Блин, не заглядывал на форум, ща поправлю скрипт.

yurko-i
рядовой
Сообщения: 43
Зарегистрирован: 2012-04-18 18:38:23

Re: Помогите написать скрипт

Непрочитанное сообщение yurko-i » 2013-08-28 10:26:40

Еще не подскажете как запустить скрипт как сервис.
Делаю следующее:
В /usr/local/etc/rc.d делаю скрипт:

Код: Выделить всё

#!/bin/sh
#
# PROVIDE: emailtosql
# REQUIRE: LOGIN cleanvar dovecot mysql
# KEYWORD: shutdown

. /etc/rc.subr

name=mailsend
rcvar=mailsend_enable

command="/usr/local/etc/utils/mailsend.sh" &

load_rc_config $name

#
# НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ
# ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf
#
#emailtosql_enable=${emailtosql_enable-"NO"}
pidfile="/var/run/mailsend.pid"
#pidfile=${emailtosql_pidfile-"/var/run/mailsend.pid"}

run_rc_command "$1"
в rc.conf

Код: Выделить всё

mailsend_enable="YES"
Делаю:

Код: Выделить всё

# /usr/local/etc/rc.d/mailsend start
Starting mailsend.

# /usr/local/etc/rc.d/mailsend stop
mailsend not running? (check /var/run/mailsend.pid).
Т.е. mailsend.pid не создается.
Скажите плз что не так делаю.
Спасибо.

Cyr
проходил мимо
Сообщения: 6
Зарегистрирован: 2014-02-11 14:54:22

Re: Помогите написать скрипт

Непрочитанное сообщение Cyr » 2014-02-11 15:11:41

Чтобы не создавать новую тему, пишу тут.
Помогите и мне написать скрипт.
Нужно подключиться на определённый порт (как telnet),
ввести слово SMDR, пароль.
А потом каждую приходящую строку писать в файл.
Имя файла - текущий год+месяц.
При обрыве соединения подключиться заново.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Помогите написать скрипт

Непрочитанное сообщение Alex Keda » 2014-02-14 20:46:57

это имеет какое-то отношение к данной теме?
Убей их всех! Бог потом рассортирует...