Сравните 20 файлов с diff, а не 2

Общие сведения

Мы переходим от ручного управления хостами к управлению конфигурацией.

20 файлов

Я хочу 20 раз сравнить файл конфигурации с 20 хостов. Например, / etc / crontab

Пример использования

Думаю, примерно 15 из 20 файлов идентичны. Я хочу увидеть пять файлов, которые были изменены вручную с помощью "vi".

Мне нужен обзор, никаких автоматических действий, таких как исправление ...

Как их сравнить ...?

Я попробовал свои Favorit diff tool (meld), но он не позволяет использовать более трех файлов: - (

-1
задан 25 May 2016 в 09:56
3 ответа

Ответы на мой собственный вопрос:

Получить конфигурацию:

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
0
ответ дан 5 December 2019 в 20:28

Я пытаюсь понять, что можно сделать, если сопоставить 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

Первый столбец показывает количество раз, когда это задание определялось.

0
ответ дан 5 December 2019 в 20:28

Подход Свена, вероятно, лучше подходит для совершенно разных файлов. Но если на самом деле уникальных только 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
0
ответ дан 5 December 2019 в 20:28

Теги

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