Есть linux машина с vsftpd, который смотрит в локальную сеть Есть локальные пользователи, которые заливайют файлы на сервер.Возникла необходимость обрабатывать все залитые файлы определенным скриптом (скрипт определяет тип файла, его размер, проверяет на вирусы, перемещает в определенную папочку и делает запись в базе данных - кто залил и с кагого Ip).
Насколько я понимаю, существует несколько способов парсить vsftpd.log:
1. Раз в минуту по crontab-у будет запускаться скрипт, который натравливается на vsftpd.log и смотрит новые записи, все новые записи обрабатываются (вычленяются из них дата-время заливки, имя файла, путь, имя пользователя и ip), удаляются уже обработанные строки и эти значения передаются основному сприпту, которые выполняет необходимые действия. Этот способ мне не нравится по той причине, что иногда минута - это слишком большой промежуток времени и я не уверен, что корректно удалять строкий из лог файла, в процессе работы программы, которая в него пишет.
2. Этот способ я совершенно не понимаю, но я о нем слышал и он мне нравится - если не сложно, пожалуйста расскажите, где можно об этом почтиать. Вообщем, вместо лог файла программа пишет во вход скрипта, а этот скрипт уже разгребает то что ему написала программа.
Расскажите пожалуйста, как реализовать второй вариант решения?
Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?Заранее большое спасибо за ответ!!
>Расскажите пожалуйста, как реализовать второй вариант решения?
>Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?
>
>Заранее большое спасибо за ответ!!
первое. система сислог может получать на свой вход лог из демона и отдавать в скрипт.второе. пишешь скрипт в режиме демона. реализованый на команде tail -f имя_лога,
который висит и слушает поступления строк в файл и сразу же парсит их.
>Есть linux машина с vsftpd, который смотрит в локальную сеть Есть локальные
>пользователи, которые заливайют файлы на сервер.
>
>Возникла необходимость обрабатывать все залитые файлы определенным скриптом (скрипт определяет тип файла,
>его размер, проверяет на вирусы, перемещает в определенную папочку и делает
>запись в базе данных - кто залил и с кагого Ip).
>
>
>Насколько я понимаю, существует несколько способов парсить vsftpd.log:
>
>1. Раз в минуту по crontab-у будет запускаться скрипт, который натравливается на
>vsftpd.log и смотрит новые записи, все новые записи обрабатываются (вычленяются из
>них дата-время заливки, имя файла, путь, имя пользователя и ip), удаляются
>уже обработанные строки и эти значения передаются основному сприпту, которые выполняет
>необходимые действия. Этот способ мне не нравится по той причине, что
>иногда минута - это слишком большой промежуток времени и я не
>уверен, что корректно удалять строкий из лог файла, в процессе работы
>программы, которая в него пишет.Думаю не пригодится.
>
>2. Этот способ я совершенно не понимаю, но я о нем слышал
>и он мне нравится - если не сложно, пожалуйста расскажите, где
>можно об этом почтиать. Вообщем, вместо лог файла программа пишет во
>вход скрипта, а этот скрипт уже разгребает то что ему написала
>программа.
>
>Расскажите пожалуйста, как реализовать второй вариант решения?
>Может быть существют какие-нибудь еще более удобные способы выполнить мою задачу?
>
>Заранее большое спасибо за ответ!!
Смотри в сторону pipe, твой VS должен писать не в файл лог, а в пайп, а пайпом будет скриптик, который сам сварганишь по разумению своему. Так гораздо проще. А со скрипта при неоходимости пиши все что надо в файл по умотрению.
tail -F /log | script &