Directory

使用 zabbix 監控跨伺服器的文件夾差異

  • May 18, 2013

問題:我想確保某個文件夾在我的伺服器上的內容是相同的。

我不希望自動文件同步來保持它們相等,更改是手動完成的。

我最初的想法是每天計算一次文件夾上的一些 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)。

引用自:https://serverfault.com/questions/450851