Wie kann ich die Ausgabe mehrerer Befehle unterscheiden? vimdiff
kann bis zu vier Dateien unterstützen, diff
scheint aber genau zwei Dateien zu unterstützen.
Ist es mit irgendeiner Variante von direkt möglich diff
, oder muss ich die Ausgabe aller Befehle in temporären Dateien speichern, eine auswählen und den Rest damit vergleichen?
Kontext:
Ich muss die Ausgabe eines bestimmten Befehls auf mehreren Servern überprüfen und prüfen, ob alle übereinstimmen. Im Moment scheint es gut zu sein, nur zu berichten, ob Unterschiede festgestellt wurden, aber wenn möglich, möchte ich sagen können: X% Server stimmen überein, Y% untereinander; oder dieser Server Z ist der ungerade.
Ich habe ein Vier-Wege-Multi-Master-LDAP-Setup und möchte überprüfen, ob die ContextCSN
Werte für alle vier miteinander übereinstimmen.
Also mache ich jetzt:
#! /bin/bash
for i in {1..4}.ldap
do
ldapsearch -x -LLL -H ldap://$i -s base -b dc=example,dc=com contextCSN > $i.csn;
done
set -e
for i in {2..4}
do
diff -q 1.csn $i.csn
done
Und überprüfen Sie den Fehlercode des Skripts. Gibt es dafür bessere Tools?
Alle Tools, die auf Ubuntu 14.04 verwendet werden können, sind willkommen.
Das
fdupes
Tool kann Ihnen hier von Nutzen sein (sollte sich in den Repositories befinden). Wenn Sie eine große Anzahl von Dateien zum Vergleichen haben, können Sie diese verwenden, um den Arbeitsaufwand zu verringern, indem Sie ermitteln, welche bereits identisch sind. Wie unten erwähnt, funktioniert es nur mit Verzeichnisargumenten. Wenn Sie alle Dateien in einem Verzeichnis haben, können Sie Folgendes tun:Identifizieren von Dateien, die gleich sind. Oder:
Um Dateien zu identifizieren, die eindeutig sind.
Der
diff3
Befehl kann auch nützlich sein.quelle
fdupes
scheint ein Verzeichnis als Argument zu benötigen (leicht zu umgehen), aber ja, die Anzahl der von zurückgegebenen Dateienfdupes
ist sehr nützlich.Wenn Sie nur sehen möchten, ob die Dateien übereinstimmen, brauchen Sie diff nicht wirklich. Einfach benutzen
sha1sum
oder so ähnlich.zum Beispiel:
Dadurch erhalten Sie eine durch Leerzeichen getrennte Liste von Server-sha1sum-Paaren. Server mit derselben sha1sum haben dieselbe Ausgabe:
Sie können eine weitere Verarbeitung durchführen, um eine Liste der übereinstimmenden Server abzurufen. Beispiel:
was gibt Ausgabe wie:
quelle