Shell‑скрипты, Ansible, deployment‑сценарии и другие подходы к автоматизации задач администрирования.
Правила форума
Убедительная просьба юзать теги [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
Спасибо.
yurko-i
-
Хостинг HostFood.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
Непрочитанное сообщение
rmn » 2013-08-14 11:44:16
Код: Выделить всё
cat /var/log/maillog | grep "status=sent" | awk '{print $7}' | sed -e 's/to=<//' -e 's/>,//'
rmn
-
yurko-i
- рядовой
- Сообщения: 43
- Зарегистрирован: 2012-04-18 18:38:23
Непрочитанное сообщение
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/>,//'
Большое спасибо, работает.
yurko-i
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2013-08-15 10:10:28
Мда, использовали все что есть

Может чуть проще?
Код: Выделить всё
sed -n '/ status=sent /s/.* to=<\([^>]*\)>.*/\1/p' /var/log/maillog
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
rmn
- старшина
- Сообщения: 427
- Зарегистрирован: 2008-10-03 18:52:02
Непрочитанное сообщение
rmn » 2013-08-15 11:04:06
kpp писал(а):Мда, использовали все что есть

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

А на счет простоты (для понимания, в частности) - наличие регулярок сразу выкидывает любой код из топ10
rmn
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
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?
Если для простоты и минимум регулярок:
Код: Выделить всё
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
По поводу понимания отдельная история.
Обычно берут готовое решение и зачем какое-то "понимание"?

Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
yurko-i
- рядовой
- Сообщения: 43
- Зарегистрирован: 2012-04-18 18:38:23
Непрочитанное сообщение
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
Делаю:
Код: Выделить всё
# /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 не создается.
Скажите плз что не так делаю.
Спасибо.
yurko-i
-
Cyr
- проходил мимо
- Сообщения: 6
- Зарегистрирован: 2014-02-11 14:54:22
Непрочитанное сообщение
Cyr » 2014-02-11 15:11:41
Чтобы не создавать новую тему, пишу тут.
Помогите и мне написать скрипт.
Нужно подключиться на определённый порт (как telnet),
ввести слово SMDR, пароль.
А потом каждую приходящую строку писать в файл.
Имя файла - текущий год+месяц.
При обрыве соединения подключиться заново.
Cyr
-
Alex Keda
- стреляли...
- Сообщения: 35494
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2014-02-14 20:46:57
это имеет какое-то отношение к данной теме?
Убей их всех! Бог потом рассортирует...
Alex Keda