URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 66967
[ Назад ]

Исходное сообщение
"Парсинг лог файлов на лету"

Отправлено Сергей Петров , 16-Июн-06 11:38 
Есть linux машина с vsftpd, который смотрит в локальную сеть Есть локальные пользователи, которые заливайют файлы на сервер.

Возникла необходимость обрабатывать все залитые файлы определенным скриптом (скрипт определяет тип файла, его размер, проверяет на вирусы, перемещает в определенную папочку и делает запись в базе данных - кто залил и с кагого Ip).

Насколько я понимаю, существует несколько способов парсить vsftpd.log:

1. Раз в минуту по crontab-у будет запускаться скрипт, который натравливается на vsftpd.log и смотрит новые записи, все новые записи обрабатываются (вычленяются из них дата-время заливки, имя файла, путь, имя пользователя и ip), удаляются уже обработанные строки и эти значения передаются основному сприпту, которые выполняет необходимые действия. Этот способ мне не нравится по той причине, что иногда минута - это слишком большой промежуток времени и я не уверен, что корректно удалять строкий из лог файла, в процессе работы программы, которая в него пишет.

2. Этот способ я совершенно не понимаю, но я о нем слышал и он мне нравится - если не сложно, пожалуйста расскажите, где можно об этом почтиать. Вообщем, вместо лог файла программа пишет во вход скрипта, а этот скрипт уже разгребает то что ему написала программа.

Расскажите пожалуйста, как реализовать второй вариант решения?
Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?

Заранее большое спасибо за ответ!!


Содержание

Сообщения в этом обсуждении
"Парсинг лог файлов на лету"
Отправлено denn , 16-Июн-06 14:38 
>Расскажите пожалуйста, как реализовать второй вариант решения?
>Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?
>
>Заранее большое спасибо за ответ!!


первое. система сислог может получать на свой вход лог из демона и отдавать в скрипт.

второе. пишешь скрипт в режиме демона. реализованый на команде tail -f имя_лога,
который висит и слушает поступления строк в файл и сразу же парсит их.


"Парсинг лог файлов на лету"
Отправлено xmorpheusx , 16-Июн-06 18:17 
>Есть linux машина с vsftpd, который смотрит в локальную сеть Есть локальные
>пользователи, которые заливайют файлы на сервер.
>
>Возникла необходимость обрабатывать все залитые файлы определенным скриптом (скрипт определяет тип файла,
>его размер, проверяет на вирусы, перемещает в определенную папочку и делает
>запись в базе данных - кто залил и с кагого Ip).
>
>
>Насколько я понимаю, существует несколько способов парсить vsftpd.log:
>
>1. Раз в минуту по crontab-у будет запускаться скрипт, который натравливается на
>vsftpd.log и смотрит новые записи, все новые записи обрабатываются (вычленяются из
>них дата-время заливки, имя файла, путь, имя пользователя и ip), удаляются
>уже обработанные строки и эти значения передаются основному сприпту, которые выполняет
>необходимые действия. Этот способ мне не нравится по той причине, что
>иногда минута - это слишком большой промежуток времени и я не
>уверен, что корректно удалять строкий из лог файла, в процессе работы
>программы, которая в него пишет.

Думаю не пригодится.

>
>2. Этот способ я совершенно не понимаю, но я о нем слышал
>и он мне нравится - если не сложно, пожалуйста расскажите, где
>можно об этом почтиать. Вообщем, вместо лог файла программа пишет во
>вход скрипта, а этот скрипт уже разгребает то что ему написала
>программа.
>
>Расскажите пожалуйста, как реализовать второй вариант решения?
>Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?
>
>Заранее большое спасибо за ответ!!


Смотри в сторону pipe, твой VS должен писать не в файл лог, а в пайп, а пайпом будет скриптик, который сам сварганишь по разумению своему. Так гораздо проще. А со скрипта при неоходимости пиши все что надо в файл по умотрению.


"Парсинг лог файлов на лету"
Отправлено мулийтрогдь , 16-Июн-06 19:00 
tail -F /log | script &