2013-02-17 49 views
0

我寫了下面的代碼,無法讓它工作,我看不出爲什麼。代碼:Python文件完整性監控

  1. 讀取目標文件的列表
  2. 遍歷目錄
  3. 奔跑MD5哈希上的文件
  4. 檢查ACTIVEFILE對於以前的MD5哈希值的所述文件
  5. 如果該文件是新的它會將其記錄爲新的
  6. 如果日誌已存在但已更改,它將寫入更改並記錄更改
  7. 如果不是新的並且沒有更改,則不要NG

下面是代碼:

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") 

回答

1

你從來沒有真正描述的問題,但一個可能的罪魁禍首是你從來沒有關閉臨時文件(或其他文件,爲這一問題),因此該文件最後複製可能會失敗。

+0

問題是某些文件不會寫入活動文件,有的文件不會寫入活動文件。第一個50左右不寫入ActiveFile,我看不出爲什麼。 – TrevJen 2013-02-23 18:36:14