Мы меняем способ обращения с серверами: от домашних животных к скоту.
В конкретном случае у меня есть около 100 серверов, на которых есть файл с именем:
/etc/rsyslog.d/local.conf
Я понятия не имею, какая версия правильная. Я провел несколько тестов, большинство из них одинаковы, но не все.
Я бы хотел пойти демократическим путем: из всех 100 конфигурационных файлов наиболее распространенная версия выбирается в качестве канонической.
Следующий шаг - посмотреть на разные файлы.
У меня есть некоторые знания о сценариях оболочки, и я могу помочь себе, не спрашивая.
Но я думаю, что мое решение было бы грязным.
Как найти каноническую версию, а затем попытаться управлять другой версией конфигурации?
Посмотрите на свой старый вопрос Сравните 20 файлов с diff, а не 2 . Ваше решение вместе с моими частями легко покажет вам количество файлов для каждой уникальной версии:
md5sum tmp/crontab-* | cut -d ' ' -f 1 | sort | uniq -c
покажет вам номер каждого хэша.
После этого у вас есть , чтобы вручную заглянуть в другие файлы, чтобы решить, какие из отличий вам необходимо включить в управление конфигурацией. Ведь даже при выпасе крупного рогатого скота каждое животное в определенной степени индивидуально.
(Правка: вставлен разрез
, чтобы сделать строки уникальными для подсчета)
Если вас интересовал сбор строк, а не полных файлов, то следующий фрагмент должен оказать некоторую помощь, ЕСЛИ у вас есть интерпретатор python:
import glob
from collections import Counter
line_counter = Counter()
for cfg in glob.iglob('**.conf'):
with open(cfg,'rb') as cf:
line_counter.update(set(cf.readlines()))
for line,score in line_counter.most_common():
print "#{} {}".format(score,line)