Кто-нибудь знает о программном обеспечении, способном централизованно отслеживать конфигурации систем Linux / UNIX на сервере? Возможно, с веб-интерфейсом и возможностями истории?
Вероятно, есть два подхода к этому конкретному вопросу, и это зависит от того, что именно вы задаете.
Если у вас есть парк систем и вы ищете способ отслеживать, чем вы владеете, когда оно было приобретено, кто за это отвечает, когда истекает срок гарантии и т. Д., То вы, вероятно, ищете программное обеспечение для управления активами. Поиск по этому поводу даст вам много релевантных результатов.
Если вы ищете способ управления конфигурацией программного обеспечения на нескольких серверах, вы, вероятно, спрашиваете об «управлении конфигурацией». В этом пространстве такие инструменты, как ansible , puppet , chef и другие, позволят вам развертывать программное обеспечение и конфигурации из центра, что часто поддерживается с помощью системы контроля версий. программное обеспечение, такое как git, - в нескольких или в тысячах систем.
Все вышеперечисленное предоставляет как инструменты CLI, так и расширенные веб-интерфейсы управления.
Я подумал, что это может вам помочь, поэтому я отправлю его как «ответ» (если бы я мог просто прокомментировать, я бы сделал это).
http://www.nongnu.org/fileschanged/
Пример 4 может относиться к той области, которую вы пытаетесь сделать. Я использовал его в далеком прошлом с хорошими результатами.
./fileschanged -r dir | while read file ; do
if [ "${file}" == "x" ] ; then
handle_file_x_script "${file}"
else if [ "${file}" == "y" ] ; then
handle_file_y_script "${file}"
fi
done
Мне пришлось следить за старым программным обеспечением, в котором недостаточно параметров ведения журнала. Это не совсем то, что вам нужно, но может помочь ты.
ref.cfg
и cur.cfg
) каждую секунду cfg.log
, если обнаружено различие watch_cfg.sh
:
#!/bin/bash
cfg_reference="/tmp/ref.cfg"
cfg_current="/tmp/cur.cfg"
while true;
do
cfg1=$(cat $cfg_reference)
cfg2=$(cat $cfg_current)
date_current="$(date +"%F_%T")"
diff_detected=false
test "$cfg1" = "$cfg2" || diff_detected=true
if [ "$diff_detected" = true ]; then
printf "$date_current [cfg] diff detected\n" >> cfg.log
diff $cfg_reference $ecfg_current > "./cfg_diff/cur.cfg_${date_current}"
cp -a "$cfg_reference" "./cfg_old/cur.cfg_before_${date_current}"
cp -a "$cfg_current" "$cfg_reference"
fi
sleep 1
done
Выполните эти команды:
chmod +x watch_cfg.sh
nohup ./watch_cfg.sh > /dev/null 2>&1 &
Это отключает процесс от текущий сеанс и отправляет его в фоновый режим.