Python文件完整性监控



我已经编写了以下代码,但无法使其正常工作,我不明白为什么。代码:

  1. 读取目标文件列表
  2. 在目录中循环
  3. 对文件运行MD5哈希
  4. 检查活动文件中所述文件以前的md5哈希
  5. 如果文件是新的,则会将其记录为新的
  6. 如果日志已存在但已更改,它将写入更改并记录更改
  7. 如果不是新的,没有改变,那就什么都不做

这是代码:

import hashlib
import logging as log
import optparse
import os
import re
import sys
import glob
import shutil
def md5(fileName):
    """Compute md5 hash of the specified file"""
    try:
        fileHandle = open(fileName, "rb")
    except IOError:
        return
    m5Hash = hashlib.md5()
    while True:
        data = fileHandle.read(8192)
        if not data:
            break
        m5Hash.update(data)
    fileHandle.close()
    return m5Hash.hexdigest()
req = open("requested.txt")
for reqline in req:
    reqName = reqline[reqline.rfind('/') + 1:len(reqline) - 1]
    reqDir = reqline[0:reqline.rfind('/') + 1] 
    tempFile = open("activetemp.txt", 'w') 
    for name in glob.glob(reqDir + reqName):    
        fileHash = md5(name) 
        actInt = 0
        if fileHash != None:
            actFile = open("activefile.txt")
            for actLine in actFile:
                actNameDir = actLine[0:actLine.rfind(' : ')]
                actHash = actLine[actLine.rfind(' : ') + 3:len(actLine) -1]
                if actNameDir == name and actHash == fileHash:
                    tempFile.write(name + " : " + fileHash + "n")
                    actInt = 1 
                    print fileHash
                    print actHash
                    print name
                    print actNameDir
                if actNameDir == name and actHash != fileHash:
                    fimlog = open("fimlog.txt", 'a')
                    tempFile.write(name + " : " + actHash + "n")         
                    actInt = 1
                    fimlog.write("FIM Log: The file " + name +  " was modified: " + actHash + "n") 
            if actInt == 0: 
                fimlog = open("fimlog.txt", 'a')
                fimlog.write("FIM Log: The file " + name +  " was created: " + fileHash + "n")
                tempFile.write(name + " : " + fileHash + "n")                       
shutil.copyfile("activetemp.txt", "activefile.txt")

您从未真正描述过这个问题,但一个可能的罪魁祸首是您从未关闭tempFile(或其他文件),因此最后的文件复制可能会失败。

相关内容

  • 没有找到相关文章

最新更新