LINUX.ORG.RU
решено ФорумAdmin

Мониторинг лог файла, и выполненине команды при наступлении события.

 , ,


0

1

Задача, мониторить файл:

/opt/ejabberd-14.12/logs/ejabberd.log

На предмет появления строки-шаблона:

2015-01-20 20:17:55.689 [info] <0.439.0>@ejabberd_c2s:wait_for_feature_request:760 ({socket_state,gen_tcp,#Port<0.3641>,<0.438.0>}) Accepted authentication for vasya by ejabberd_auth_ldap from 192.168.1.43

При появлении такой строки, надо выдернуть: vasya и 192.168.1.43, после чего запустить сценарий:

/usr/bin/action.sh vasya 192.168.1.43

Вроде задача не сложная. Но... Как бы красивее? Видел утилиту monit. - Она мне пойдёт? Или что-то попроще есть? Может fail2ban..?

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

logstash бы посоветовал. но слишком жирный комбайн.

tailf +grep + xargs -l1 script.sh
в script.sh парсишь переменную «$@» своими методами.

bl ★★★
()
Ответ на: комментарий от sdio

Мне не надобен мониторинг, мне надобно обновлять ddns records при наступлении события.

Или ты имеешь ввиду, что я могу поставить nagius агента, без самого сервера, и выдернуть эту штуковину оттуда?

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
tailf /opt/ejabberd-14.12/logs/ejabberd.log | perl -ne 'qx(/usr/bin/action.sh $1 $2) if /Accepted authentication for (.*) by .* from (.*)/;'
Deleted
()
Ответ на: комментарий от DALDON

тогда поправка: system(«/usr/bin/action.sh $1 $2») вместо qx(...). Интерполяция и всё такое...

ну и unbuffer не забудь, если у тебя expect, или stdbuf в другом случае.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

СПАСИБО тебе огромное, всё работает! Не очень понял, в чём разница между system и qx? В двух словах если не трудно. :) Я ведь в продакшен кину и в скрипте укажу твой ник, чтобы увековечиь! :-D

DALDON ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Такс, я далёк от программирования, у меня в сценарии примерно такое:

echo "
server 192.168.6.1 
zone company.ru.
update delete $1.company.ru. A
update add $1.company.ru. 86400 A $2
send" | nsupdate -k /etc/bind/rndc.key

Какие буфера, мне следует учесть?

Объясню зачем мне это нужно: у меня есть ЗООПАРК, из linux/windows (Home/pro) машинок, часть в домене, часть вне его. Нужно всё это барахло админить по VNC, вопрос в том, по какому имени dns подключаться? - Именовать компьютеры как фамилии сотрудников - не гуд + бывают ноутбуки залётные и т.п. - А вот сейчас собираюсь менять jabber сервер, и в логах увидел нужные строчки, а с тем учётом, что jabber есть у всех, в т.ч. у VPNнщиков, то... Кажется проблема, которая мучила меня, и не только меня - РЕШЕНА! Теперь в jabber, в pidgin можно будет заглянуть и найти почту, плюс понять как оказать помощь человеку по vnc.

OpenSource во все поля :)

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

tailf и tail -f - одно и тоже.

не совсем. У меня в слаке /bin/tail входит в минимальную систему, а /usr/bin/tailf это опционально, и в принципе может и не быть. Как в других дистрах я не помню.

emulek
()
Ответ на: комментарий от emulek

Пока не удалось найти ничего более удобного. Реально искал. В итоге запилили ddns+samba4+ldap+kerberos+squid+openvpn+ejabberd+freeradius (для wifi). Клиентам поставили vnc, linux загнал в домен, PRO винды - загнал в домен, всем остальным поставил MIT Kerberos + keytab сгенерил ну или ручками вбивают пассворд для билетов.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от Deleted

Окей! :) Но буду иметь ввиду если чего. Я пока не клал в фон ещё сиё дело. :) Спасибо ещё раз!

DALDON ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.