Я тут одно извращение придумал, не знаю насколько полезное

Nov 23, 2012 16:52


#!/bin/bash

LINES=`cat $0 | wc -l`
let LINES=LINES-1
HASH=`head -${LINES} $0 | md5sum | tr -d " -"`
HASH="#"${HASH}
STORED=`tail -1 $0`
if [[ ${HASH} != ${STORED} ]] ; then
echo -e "\033[31mINVALID HASH! SCRIPT MODIFIED OR CORRUPTED! EXIT NOW\033[0m"
exit 1
fi

echo -e "\033[32mSimple selfprotected script\033[0m"
#0eb63c093c9be4cfb535c85e826fd9fa ( Read more... )

work, beeline, fun, shell, job

Leave a comment

Comments 4

(The comment has been removed)

roman_pro November 23 2012, 19:00:11 UTC
Ну это да.

Reply


_winnie November 23 2012, 16:30:05 UTC
можно рядышком с пачкой скриптов хранить их хеши, и сравнивать скриптом
find -type f | xargs md5sum > /tmp/hashes.current.txt
diff /tmp/hashes.current.txt hashes.txt

если деплой делается через VCS, то там это встроено

если деплой делается по rsync, то там есть --dry-run

У нас желание похакать в продакшн обуздывается тем, что за продакшн отвечают своими яйцами админы. А разработчики готовят для них debian-пакеты, и не имеют root-доступа на продакшн.

Reply

roman_pro November 23 2012, 19:18:40 UTC
Ну тут фактически аналогичная ситуация, с той лишь разницей, что разработчики признаны ценным ресурсом, а потому админы тоже немного разрабатывают скрипты "для себя" - например экспорт с продуктива дампов для разворачивания тестовых сред.
И, похоже, процесс установки патчей ручной - по инструкции от разработчиков меняются/дополняются файлики, выполняются запросы в базе. И никто особо не чешется это автоматизировать, т.к. если я верно понял наша задача - контролировать местных админов и помогать в случае косяков. Никакого "инсталлятора" патчей я не увидел, хотя теоретически его можно написать, т.к. патч приходит более-менее структурированным. Скоро точно всё узнаю.

Reply


(The comment has been removed)

(The comment has been removed)

roman_pro November 28 2012, 08:38:43 UTC
Прикольно. Я как раз думал про уравнение md5(X)=X и его решение

Reply


Leave a comment

Up