2013-02-17 2 views
0

다음 코드를 작성 했으므로 작동하지 않으며 그 이유를 알 수 없습니다. 코드 : 파일 인 경우 파일 Python 파일 무결성 모니터링

  • 말했다위한

    1. 이전 MD5 해시의 파일에
    2. 루프 디렉토리를 통해
    3. 검사합니다 activefile을
    4. 실행합니다 MD5 해시를 대상 파일의 목록을 읽 새 로그로 기록됩니다.
    5. 로그가 있지만 변경된 로그는 변경 사항을 기록하고 변경 사항을 기록합니다.
    6. 새롭지 만 변경 사항이없는 경우 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

    문제는 일부 파일이 activefile에 기록되지 않고 일부 파일이 기록되지 않는다는 것입니다. 처음 50 정도는 activefile에 쓰여지지 않고 이유를 알 수 없습니다. – TrevJen