Мы переходим от ручного управления хостами к управлению конфигурацией.
Я хочу 20 раз сравнить файл конфигурации с 20 хостов. Например, / etc / crontab
Думаю, примерно 15 из 20 файлов идентичны. Я хочу увидеть пять файлов, которые были изменены вручную с помощью "vi".
Мне нужен обзор, никаких автоматических действий, таких как исправление ...
Я попробовал свои Favorit diff tool (meld), но он не позволяет использовать более трех файлов: - (
Ответы на мой собственный вопрос:
Получить конфигурацию:
parallel -q -j0 scp {}:/etc/crontab tmp/crontab-{}.conf :::
Обзор:
md5sum tmp/crontab-* | sort
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-foo@foo.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-blu@blu.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-x23@x23.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-fmr@fmr.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-bmw@bmw.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-sun@sun.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-nvc@nvc.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-the@the.conf
581cc593069e5a59cde886d7491e9cf4 tmp/crontab-vum@vum.conf
94d1fdc2cc561aafec162209d2360f78 tmp/crontab-bar@bar.conf
Конфигурация на "баре" хоста отличается. Проверьте:
vimdiff tmp/crontab-nvc@nvc.conf tmp/crontab-bar@bar.conf
Я пытаюсь понять, что можно сделать, если сопоставить 20 файлов друг с другом, но, возможно, у меня есть другой подход.
Я предполагаю, что вы хотите знать, какие задачи cron определены для всех ваших систем. Вместо того, чтобы различать файлы, я предлагаю выводить их вместе, сортировать
вывод, а затем использовать uniq
, чтобы исключить повторяющиеся строки:
File1:
10 10 * * * /myjob.sh
* * * * * /everyminute.sh
File2:
20 20 * * * /evening-job.sh
* * * * * /everyminute.sh
Все задания по всем файлам:
cat File1 File2 | sort | uniq -c
1 10 10 * * * /myjob.sh
1 20 20 * * * /evening-job.sh
2 * * * * * /everyminute.sh
Первый столбец показывает количество раз, когда это задание определялось.
Подход Свена, вероятно, лучше подходит для совершенно разных файлов. Но если на самом деле уникальных только 5, я бы предпочел сделать что-нибудь еще ... просматривая целые файлы, содержащие какую-то закодированную вещь со счетчиками.
Проверьте их сумму и покажите имена и счетчики. Тогда вы могли бы, например. 5 уникальных версий файлов, тогда вам будет легче сравнивать каждую с первой, по одной, 4 раза.
sha1sum files/* | sort | uniq -c
vimdiff files/file1 files/file2
# FYI short syntax of above (bash):
vimdiff files/file{1,2}
Если результатов слишком много, возможно, сначала удалите нерелевантные вещи, такие как комментарии и пробелы.
mkdir /tmp/trimmed
cd /tmp/trimmed
for f in /path/to/files/*; do
n=$(basename "$f")
grep -Ev "^[ \t]*$|^[ \t]*#" "$f" > "$n".trimmed
done
sha1sum *.trimmed | sort | uniq -c