Страница 1 из 1

syslog

Добавлено: 2011-07-02 19:52:57
gumeniuc
Доброго времени суток,

Вопрос собственно в следующем. Каким образом можно запустить некий скрипт при появлении логов какого-либо демона ? Насколько я понимаю , кроме как syslog, больше рассчитывать не на что.

При попытке проделать что-то подобное

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

auth.info				|	/usr/1.sh
скрипт не отрабатывает.

Собственно скрипт исключительно для проверки факта запуска

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

#!/usr/local/bin/bash

echo "Alert" >> /usr/alert.txt
Подскажите, пожалуйста, как лучше реализовать подобную задачу.
спасибо

Re: syslog

Добавлено: 2011-07-02 20:21:36
Electronik
в cron запихни скрипт который будет отслеживать появления нового файла, а-ля

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

ls /path/to/log/file | grep file.log
и как то ка файл появился то сразу бы запускал второй скрипт

Re: syslog

Добавлено: 2011-07-02 21:20:36
FreeBSP

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

man syslog.conf

Re: syslog

Добавлено: 2011-07-03 15:42:37
gumeniuc
Electronik писал(а):в cron запихни скрипт который будет отслеживать появления нового файла, а-ля

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

ls /path/to/log/file | grep file.log
и как то ка файл появился то сразу бы запускал второй скрипт
спасибо за совет, но крон это крон, тут всётаки вопрос скорее о real-time.

Re: syslog

Добавлено: 2011-07-03 15:49:52
gumeniuc
FreeBSP писал(а):

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

man syslog.conf
по правде сказать, вижу в примере строку о перенаправлении auth логов в некий фильтр

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

  # Pipe all authentication messages to a filter.
     auth.*                                  |exec /usr/local/sbin/authfilter
Намекните, пожалуйста, что это за фильтр такой.

спасибо

Re: syslog

Добавлено: 2011-07-03 17:08:36
FreeBSP
gumeniuc писал(а):Каким образом можно запустить некий скрипт при появлении логов какого-либо демона ?
gumeniuc писал(а):

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

  # Pipe all authentication messages to a filter.
     auth.*                                  |exec /некий/скрипт 
gumeniuc писал(а):Намекните, пожалуйста, что это за фильтр такой.
думаю, это просто пример
при желании можно распаковать все порты в ports/security/ и поискать там

Re: syslog

Добавлено: 2011-07-03 21:36:11
gumeniuc
FreeBSP писал(а):
gumeniuc писал(а):Каким образом можно запустить некий скрипт при появлении логов какого-либо демона ?
gumeniuc писал(а):

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

  # Pipe all authentication messages to a filter.
     auth.*                                  |exec /некий/скрипт 
gumeniuc писал(а):Намекните, пожалуйста, что это за фильтр такой.
думаю, это просто пример
при желании можно распаковать все порты в ports/security/ и поискать там
По правде сказать, я так и сделал, но ничего не работает.

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

auth.info;authpriv.info                         |exec /usr/1.sh
при этом права на 1.sh 555 , на alert.txt 666. Вроде и прав и на чтение и на запуск и на исполнение хватает, но при авторизации ничего не пишется в файл.

Re: syslog

Добавлено: 2011-07-03 23:13:37
FreeBSP
сислог был перезапущен?

Re: syslog

Добавлено: 2011-07-04 19:22:33
gumeniuc
FreeBSP писал(а):сислог был перезапущен?
сислог был перезапущен, и полный ребут был, и сислог в дебаг моде смотрел. Вроде как должно работать, но не работает.

Re: syslog

Добавлено: 2011-07-04 20:56:45
FreeBSP
запись в общей части?

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

testbed# cat /etc/syslog.conf
общая часть

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

# $FreeBSD: src/etc/syslog.conf,v 1.30.2.1 2009/08/03 08:13:06 kensmith Exp $
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
security.*                                      /var/log/security
auth.info;authpriv.info                         /var/log/auth.log
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
ftp.info                                        /var/log/xferlog
cron.*                                          /var/log/cron
*.=debug                                        /var/log/debug.log
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info                                   /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
*.*                                             /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
часть обработки логов от ident ppp

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

!ppp
*.*                                             /var/log/ppp.log
часть обработки логов от ident mpd

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

!mpd
*.*                                             /var/log/mpd.log
дополнительно раскомментируйте all.log, проверьте facility, приоритет и идентификатор получаемых логов

Re: syslog

Добавлено: 2011-07-04 21:33:19
gumeniuc
Я сделал следующим образом:

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

auth.info;authpriv.info                         /var/log/auth.log
auth.info;authpriv.info                         |exec /usr/1.sh
Затем tail -f /var/log/auth.log и tail -f /usr/alert.txt. Открываю ssh сессию, при этом в auth.log логи выпятся, а alert.txt пуст.

Re: syslog

Добавлено: 2011-07-04 21:41:36
FreeBSP
похоже на ошибку в мане
или изменение поведения exec
или что то еще
сразу после пайпа надо сразу писать обработчик, вместо "exec обработчик"

testbed# vidcontrol -P < /dev/ttyv1

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

testbed#























testbed# cat /etc/syslog.conf

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

# $FreeBSD: src/etc/syslog.conf,v 1.30.2.1 2009/08/03 08:13:06 kensmith Exp $
#
#       Spaces ARE valid field separators in this file. However,
#       other *nix-like systems still insist on using tabs as field
#       separators. If you are sharing this file between systems, you
#       may want to use only tabs as field separators here.
#       Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
security.*                                      /var/log/security
auth.info;authpriv.info                         |/root/bin/syslogtest.sh
auth.info;authpriv.info                         /var/log/auth.log
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
ftp.info                                        /var/log/xferlog
cron.*                                          /var/log/cron
*.=debug                                        /var/log/debug.log
*.emerg                                         *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info                                   /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
*.*                                             /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.*                                            @loghost
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!ppp
*.*                                             /var/log/ppp.log
!mpd
*.*                                             /var/log/mpd.log
#!*

testbed# cat /root/bin/syslogtest.sh

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

#!/bin/sh

echo Bingo! >> /dev/ttyv1
testbed# ssh nunexistuser@127.0.0.1

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

The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is **********************************************************.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
Password:
Password:
Password:
Permission denied (publickey,keyboard-interactive).
testbed# vidcontrol -P < /dev/ttyv1

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

testbed# Bingo!
Bingo!
Bingo!
Bingo!
Bingo!





















Re: syslog

Добавлено: 2011-07-04 22:10:00
gumeniuc
Премного благодарен !!! Теперь заработало :) Огромнейшее спасибо !

Re: syslog

Добавлено: 2012-01-17 10:05:19
Olorin
Есть примерно такая же проблема - хочу на лету перехватывать от ipfw записи в syslog. Первоначально в syslog.conf была такая запись:

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

!ipfw
*.*                                             -/var/log/ipfw.log
Все работает, лог фаерволла пишется, соответственно, в /var/log/ipfw.log.

Мне нужно обрабатывать лог фаерволла на лету. Для теста написал скрипт temp.sh простого содержания, чтобы все пришедшие записи записывались в файл:

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

#!/bin/sh

echo $* >> /home/olorin/123
И отредактировал syslog.conf:

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

!ipfw
*.*                                            |exec /home/olorin/temp.sh
После рестарта syslog.conf в /home/olorin/123 записываются переносы строк. Попробовал, как советовали выше, убрать exec из конфига - не помогло.
Отличие от того, что было сделано товарищем FreeBSP, в том, что мне нужны сами сообщения, которые появляются в логе.
Есть идеи, господа?

Re: syslog

Добавлено: 2012-01-17 10:39:30
FreeBSP
сообщения на стандартном вводе скрипта

Re: syslog

Добавлено: 2012-01-17 10:56:12
Olorin
Черт побери, чего ж я сам не догадался?)
Спасибо FreeBSP, получился такой скрипт на shell'е (опять же, тестовый):

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

#!/bin/sh

read a
echo $a >> /home/olorin/123
Дальше буду писать обработчик на питоне :)

Re: syslog

Добавлено: 2012-01-17 11:30:54
FreeBSP
в одном сообщении может быть больше одной строки
while read a; do echo $a ...; done;

Re: syslog

Добавлено: 2012-01-17 11:49:47
Olorin
Хмм.. Учту при разработке, спасибо большое.)

Re: syslog

Добавлено: 2012-01-18 9:49:08
spf
не проще ли сделать

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

#!/bin/sh

cat >> /home/olorin/123

Re: syslog

Добавлено: 2012-01-18 10:49:33
FreeBSP
:shock:
красиво

Re: syslog

Добавлено: 2012-01-18 17:03:08
FiL
spf писал(а):не проще ли сделать

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

#!/bin/sh

cat >> /home/olorin/123
с учетом того, что потом в этом скрипте все-таки должен быть обработчик, то нет, не проще.
Надо таки читать read-ом и обрабатывать.