我们正在改变处理服务器的方式:从宠物到牛。
在特定情况下,我有大约 100 台服务器,其中有一个名为的文件:
/etc/rsyslog.d/local.conf
我不知道哪个版本是正确的。我做了一些测试,大多数都一样,但不是全部。
我想采取民主的方式:所有 100 个配置文件中最常见的版本被选为规范版本。
下一步是查看不同的文件。
我有一些 shell 脚本知识,不需要询问就能帮助自己。
但我认为我的解决方案可能不太好。
您如何找到规范版本然后尝试管理不同的配置版本?
答案1
看看你的旧问题使用 diff 比较 20 个文件,而不是 2 个。您的解决方案与我的部分解决方案一起将轻松向您显示每个唯一版本的文件数量:
md5sum tmp/crontab-* | cut -d ' ' -f 1 | sort | uniq -c
将显示每个哈希出现的数量。
之后,你有手动查看其他文件,以确定需要将哪些差异纳入配置管理。毕竟,即使是放牧牛群,每只动物在某种程度上都是独一无二的。
(编辑:插入cut
以使行唯一以便计数)
答案2
如果你有兴趣收集行而不是完整的文件,那么下面的代码片段应该会提供一些帮助,如果你身边有一个python解释器:
import glob
from collections import Counter
line_counter = Counter()
for cfg in glob.iglob('**.conf'):
with open(cfg,'rb') as cf:
line_counter.update(set(cf.readlines()))
for line,score in line_counter.most_common():
print "#{} {}".format(score,line)