¿Cómo difiero la salida de múltiples comandos? vimdiff
puede admitir hasta cuatro archivos, pero diff
parece admitir exactamente dos archivos.
¿Es directamente posible con alguna variante de diff
, o tengo que guardar la salida de todos los comandos en archivos temporales, elegir uno y difundir el resto con él?
Contexto:
Tengo que verificar la salida de un determinado comando en varios servidores y ver si todos están de acuerdo. Por el momento, solo informar si se encuentran diferencias parece bueno, pero si es posible, me gustaría poder decir: X% de los servidores están de acuerdo entre sí, Y% entre sí; o ese servidor Z es el extraño.
Tengo una configuración LDAP multimaestro de cuatro vías y quiero verificar que los ContextCSN
valores de los cuatro coincidan entre sí.
Entonces ahora lo hago:
#! /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
Y verifique el código de error del script. ¿Hay mejores herramientas para esto?
Cualquier herramienta que se pueda usar en Ubuntu 14.04 es bienvenida.
La
fdupes
herramienta puede serle útil aquí (debe estar en los repositorios). Si tiene una gran cantidad de archivos para comparar, puede usarlos para reducir el trabajo que tiene que hacer al identificar cuáles ya son idénticos. Como se indica a continuación, solo funciona con argumentos de directorio. Si tiene todos los archivos para diferenciar en un directorio, puede hacer algo como:Para identificar archivos que son iguales. O:
Para identificar archivos que son únicos.
El
diff3
comando también puede ser útil.fuente
fdupes
parece necesitar un directorio como argumento (se puede solucionar fácilmente), pero sí, un recuento de archivos devueltos porfdupes
es muy útil.Si solo desea ver si los archivos están de acuerdo, entonces realmente no necesita diff. Solo usa
sha1sum
o algo así.por ejemplo:
Esto le dará una lista separada por espacios de pares de servidores, sha1sum. Los servidores con el mismo sha1sum tienen la misma salida:
Puede realizar un procesamiento adicional para obtener una lista de servidores coincidentes, por ejemplo:
que da salida como:
fuente