如何区分多个命令的输出?vimdiff
最多可以支持四个文件,但diff
它本身似乎正好支持两个文件。
是否可以直接diff
使用 .
语境:
我必须在多台服务器上检查某个命令的输出,看看它们是否都同意。目前,仅报告是否发现任何差异似乎很好,但如果可能的话,我想能够说:X% 服务器彼此同意,Y% 彼此同意;或者那个服务器 Z 是奇怪的。
我有一个四路多主 LDAP 设置,我想验证ContextCSN
所有四个的值是否一致。
所以现在我这样做:
#! /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
Run Code Online (Sandbox Code Playgroud)
并检查脚本的错误代码。有没有更好的工具?
欢迎任何可以在 Ubuntu 14.04 上使用的工具。
Mar*_*iae 12
执行此操作的工具是Diffuse。它通常也可以从 repos 获得(至少在我检查过的 Debian 和 Arch 中)。它的工作原理与您期望的一样:
diffuse file1 file2 file3 file4
Run Code Online (Sandbox Code Playgroud)
等等。
该fdupes
工具可能对您有用(应该在存储库中)。如果您有大量要比较的文件,您可以使用它通过识别哪些文件已经相同来减少您必须做的工作。如下所述,它仅适用于目录参数。如果您将所有文件都放在一个目录中,您可以执行以下操作:
fdupes .
Run Code Online (Sandbox Code Playgroud)
识别相同的文件。或者:
comm -13 <(fdupes . |sort -u) <(find . -maxdepth 1 | sort)
Run Code Online (Sandbox Code Playgroud)
识别唯一的文件。
该diff3
命令也可能有用。
如果您只想查看文件是否一致,那么您实际上并不需要 diff。只需使用sha1sum
或类似的东西。
例如:
#!/bin/sh
command="foo;bar|baz"
for server in server1 server2 server3 server4 server5 server6: do
echo $server $(ssh $server "$command" |sha1sum)
done | sort -k2
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个以空格分隔的服务器列表,sha1sum 对。具有相同 sha1sum 的服务器具有相同的输出:
server1 55ca6286e3e4f4fba5d0448333fa99fc5a404a73 *-
server3 55ca6286e3e4f4fba5d0448333fa99fc5a404a73 *-
server6 55ca6286e3e4f4fba5d0448333fa99fc5a404a73 *-
server2 d961c3de6d6c99429806ae3d6d03f316a1168ac6 *-
server4 d961c3de6d6c99429806ae3d6d03f316a1168ac6 *-
server5 dcdc24e139db869eb059c9355c89c382de15b987 *-
Run Code Online (Sandbox Code Playgroud)
您可以进行进一步处理以获取匹配服务器的列表,例如:
#!/bin/sh
command="foo;bar|baz"
for server in server1 server2 server3 server4 server5: do
echo $server $(ssh $server "$command" |sha1sum)
done | sort -k2 | while read srv sum; do
if [ "$prevsum" == "$sum" ]; then
echo -n " "
else
echo
fi
echo -n $srv
prevsum=$sum
done
Run Code Online (Sandbox Code Playgroud)
这给出了输出,如:
server1 server3 server6
server2 server4
server5
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3949 次 |
最近记录: |