Отслеживание изменения файлов
От: Anton Batenev Россия https://github.com/abbat
Дата: 09.02.15 23:03
Оценка:
Hello!

Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.
avalon/1.0.442
Re: Отслеживание изменения файлов
От: vsb Казахстан  
Дата: 09.02.15 23:33
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Hello!


AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.


Если выводим diff с предыдущим запуском, значит у нас есть каталог с файлами с предыдущего запуска. Собственно утилита diff для этого прекрасно подойдёт.
Re: Отслеживание изменения файлов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 10.02.15 00:17
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.


Делал такое как раз на Python. Есть довольно не плохая библиотека — Watchdog, которая как раз и решает эту задачу. Под капотом там kqueue крутится, так что ты можешь взять и libevent или еще что-либо на нем базирующееся по вкусу.
Re[2]: Отслеживание изменения файлов
От: SkyDance Земля  
Дата: 10.02.15 02:35
Оценка:
KP>kaa.python,
KP>Делал такое как раз на Python.

Отличный каламбур

Вообще такая задача очень легко решается с помощью VCS (git или что угодно), командой git status смотреть изменения, и diff'ом тут же их посылать кому следует. Заодно и откатывать будет сильно проще.
Re[3]: Отслеживание изменения файлов
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 10.02.15 02:41
Оценка:
Здравствуйте, SkyDance, Вы писали:

KP>>kaa.python,

KP>>Делал такое как раз на Python.
SD>Отличный каламбур

kaa.python любит Python. Что уж тут

SD>Вообще такая задача очень легко решается с помощью VCS (git или что угодно), командой git status смотреть изменения, и diff'ом тут же их посылать кому следует. Заодно и откатывать будет сильно проще.


Зависит от задачи. Мне кажется, в ряде случаев, навертеть сверху VCS будет избыточным решением.
Re[4]: Отслеживание изменения файлов
От: SkyDance Земля  
Дата: 10.02.15 03:00
Оценка:
KP>kaa.python любит Python. Что уж тут

Звучит... неоднозначно. Не то самолюбование, не то see command line switch -1

KP>Зависит от задачи. Мне кажется, в ряде случаев, навертеть сверху VCS будет избыточным решением.


Назначение VCS — отслеживать изменения и иметь возможность их откатить. Если разработчик уже пользуется какой-то системой контроля версий, логично будет распространить ее и на production, разве нет? В этом способе есть свои недостатки (как-то history, хранящаяся рядом на сервере), но раз уж там есть diff'ы и backup'ы, то так будет даже удобнее.
Re: Отслеживание изменения файлов
От: DOOM Россия  
Дата: 10.02.15 05:45
Оценка: 8 (1)
Здравствуйте, Anton Batenev, Вы писали:

AB>Hello!


AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.

Погляди: http://aide.sourceforge.net/
Re: Отслеживание изменения файлов
От: SergeCpp Россия http://zoozahita.ru
Дата: 10.02.15 08:41
Оценка: 8 (1)
Это такой класс программ: http://en.wikipedia.org/wiki/File_integrity_monitoring

Вот одна из них: http://afick.sourceforge.net/
Скриншоты (есть и разнообразные отчёты): http://afick.sourceforge.net/screenshots.html
http://zoozahita.ruБездомные животные Екатеринбурга ищут хозяев
Re[2]: Отслеживание изменения файлов
От: Anton Batenev Россия https://github.com/abbat
Дата: 13.02.15 20:01
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO> Погляди: http://aide.sourceforge.net/


Да, почти то, что требуется. Можно бы было еще было задать в правилах проверку файлов по расширению (*.php) вместо вырвиглазных регулярок, и ничего не выводить когда целостность не нарушена, то цены бы ей не было А так пришлось городить sh-скрипт поверх, но все равно спасибо — требуемую задачу решила.
avalon/1.0.442
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.