Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello!
AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.
Если выводим diff с предыдущим запуском, значит у нас есть каталог с файлами с предыдущего запуска. Собственно утилита diff для этого прекрасно подойдёт.
Здравствуйте, Anton Batenev, Вы писали:
AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.
Делал такое как раз на Python. Есть довольно не плохая библиотека — Watchdog, которая как раз и решает эту задачу. Под капотом там kqueue крутится, так что ты можешь взять и libevent или еще что-либо на нем базирующееся по вкусу.
Вообще такая задача очень легко решается с помощью VCS (git или что угодно), командой git status смотреть изменения, и diff'ом тут же их посылать кому следует. Заодно и откатывать будет сильно проще.
Здравствуйте, SkyDance, Вы писали:
KP>>kaa.python, KP>>Делал такое как раз на Python. SD>Отличный каламбур
kaa.python любит Python. Что уж тут
SD>Вообще такая задача очень легко решается с помощью VCS (git или что угодно), командой git status смотреть изменения, и diff'ом тут же их посылать кому следует. Заодно и откатывать будет сильно проще.
Зависит от задачи. Мне кажется, в ряде случаев, навертеть сверху VCS будет избыточным решением.
Звучит... неоднозначно. Не то самолюбование, не то see command line switch -1
KP>Зависит от задачи. Мне кажется, в ряде случаев, навертеть сверху VCS будет избыточным решением.
Назначение VCS — отслеживать изменения и иметь возможность их откатить. Если разработчик уже пользуется какой-то системой контроля версий, логично будет распространить ее и на production, разве нет? В этом способе есть свои недостатки (как-то history, хранящаяся рядом на сервере), но раз уж там есть diff'ы и backup'ы, то так будет даже удобнее.
Здравствуйте, Anton Batenev, Вы писали:
AB>Hello!
AB>Есть задача — раз в N минут обходить директорию, считать md5/sha1/(не особо принципиально что, главное чтобы узнать, что файл был изменен) всех файлов и выводить diff с предыдущим снимком (предыдущим запуском) в stdout. Задача с одной стороны вроде решается элементарно на каком-нибудь языке типа python, но велосипедить лениво. Есть что-нибудь более-менее готовое? OS FreeBSD. Нужно для того, чтобы разработчик сайта смог оперативно отловить как его ломают и какие файлы подменяют.
Погляди: http://aide.sourceforge.net/
Да, почти то, что требуется. Можно бы было еще было задать в правилах проверку файлов по расширению (*.php) вместо вырвиглазных регулярок, и ничего не выводить когда целостность не нарушена, то цены бы ей не было А так пришлось городить sh-скрипт поверх, но все равно спасибо — требуемую задачу решила.