Directory
使用 zabbix 監控跨伺服器的文件夾差異
問題:我想確保某個文件夾在我的伺服器上的內容是相同的。
我不希望自動文件同步來保持它們相等,更改是手動完成的。
我最初的想法是每天計算一次文件夾上的一些 crc/hash 並發送到 Zabbix,並在值不同時觸發。
有沒有什麼好的工具可以計算文件夾的 crc 或類似的?
有人知道解決我的問題的另一種解決方案嗎?
不久前我遇到了完全相同的問題,並編寫了這段 python 程式碼來生成該校驗和:
def checksum(root): md5sums = {} items = os.path.walk(root, checksum_dir, md5sums) _md5sums = [] for k in sorted(md5sums.keys()): _md5sums += md5sums[k] return md5.new(''.join(_md5sums)).hexdigest() def checksum_dir(md5sums, path, names): names.sort() if '.git' in names: names.remove('.git') md5sums[path] = [] for name in names: name = os.path.join(path, name) if os.path.islink(name): md5sums[path].append(os.readlink(name)) elif os.path.isdir(name): continue elif os.path.isfile(name): fd = open(name) md5sums[path].append(md5.new(fd.read()).hexdigest()) fd.close() else: raise ValueError("File %s is not a normal name or a symlink")
我將它包裝在一個 func 模組中,並通過 nrpe 觸發對 funcmaster 的相關檢查(我們使用 nagios,而不是 zabbix)。