Как заставить скрипт работать как демон, ожидающий изменений в 2 файлах?

Кто-нибудь знает о программном обеспечении, способном централизованно отслеживать конфигурации систем Linux / UNIX на сервере? Возможно, с веб-интерфейсом и возможностями истории?

Вероятно, есть два подхода к этому конкретному вопросу, и это зависит от того, что именно вы задаете.

Если у вас есть парк систем и вы ищете способ отслеживать, чем вы владеете, когда оно было приобретено, кто за это отвечает, когда истекает срок гарантии и т. Д., То вы, вероятно, ищете программное обеспечение для управления активами. Поиск по этому поводу даст вам много релевантных результатов.

Если вы ищете способ управления конфигурацией программного обеспечения на нескольких серверах, вы, вероятно, спрашиваете об «управлении конфигурацией». В этом пространстве такие инструменты, как ansible , puppet , chef и другие, позволят вам развертывать программное обеспечение и конфигурации из центра, что часто поддерживается с помощью системы контроля версий. программное обеспечение, такое как git, - в нескольких или в тысячах систем.

Все вышеперечисленное предоставляет как инструменты CLI, так и расширенные веб-интерфейсы управления.

4
20.12.2016, 15:23
3 ответа

Вы можете использовать incron для прослушивания событий inotify. Пакеты доступны в дистрибутиве, подобном debian (ubuntu,…), а также, вероятно, в других

0
27.01.2020, 20:59

Я подумал, что это может вам помочь, поэтому я отправлю его как «ответ» (если бы я мог просто прокомментировать, я бы сделал это).

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
1
27.01.2020, 20:59

Мне пришлось следить за старым программным обеспечением, в котором недостаточно параметров ведения журнала. Это не совсем то, что вам нужно, но может помочь ты.

  • сравнивает 2 файла ( 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 &

Это отключает процесс от текущий сеанс и отправляет его в фоновый режим.

1
27.01.2020, 20:59

Теги

Похожие вопросы