} } }

    贴一贴本身写的文件监控代码python

    添加时间:2013-5-18 点击量:

      1 
    
    2 Created on 2013-1-29
    3
    4 @author: zsy
    5
    6 import os.path
    7 import time
    8 import smtplib
    9 email.mime.text import MIMEText
    10 email.mime.multipart import MIMEMultipart
    11 email.mime.audio import MIMEAudio
    12
    13 class Scanner():
    14 def isExists(self,saveFile):
    15 return os.path.isfile(saveFile)
    16
    17 def getFileName(self,targetDir,whiteDir):
    18 export = []
    19 export_notime=[]
    20 for root, dirs, fileNames in os.walk(targetDir):
    21 for i,dirname in enumerate(dirs):
    22 if dirname in whiteDir:del dirs[i]
    23 if fileNames:
    24 for filename in fileNames:
    25 filepath=os.path.join(root,filename)
    26 if os.path.islink(filepath):
    27 continue
    28 try:
    29 filetime=time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(os.stat(filepath).st_mtime))
    30 export.append(filepath+------+filetime+\n
    31 export_notime.append(filepath)
    32 except:
    33 export.append(filepath+\n
    34 export_notime.append(filepath)
    35 return export,export_notime
    36
    37 def scan(self,targetDir,whiteDir, saveFile):
    38 file = open(saveFile, w
    39 scanlist,scanlist_notime=self.getFileName(targetDir,whiteDir)
    40 for ifile in scanlist:
    41 try:
    42 file.write(ifile)
    43 except:
    44 file.write(ifile.encode(utf-8).decode(gbk))
    45 file.close()
    46 return scanlist,scanlist_notime
    47
    48 def rescan(self,targetDir,whiteDir,saveFile,changFile):
    49 get filelist,filelist_notime savefile
    50 filelist = []filelist scanned before
    51 filelist_notime=[]
    52 read = open(saveFile, r
    53 line = read.readline()
    54 while line:
    55 linenotime=line.split(------)[0]
    56 filelist.append(line)
    57 filelist_notime.append(linenotime)
    58 line = read.readline()
    59 read.close()
    60 get scanlist,scanlist_notime scan method
    61 scanlist,scanlist_notime = self.scan(targetDir,whiteDir,saveFile)filelist scanned current
    62
    63 get list,addlist,modifylist
    64 fileset = set(filelist)
    65 fileset_notime=set(filelist_notime)
    66 scanset = set(scanlist)
    67 scanset_notime=set(scanlist_notime)
    68
    69 list=[i for i in fileset_notime-scanset_notime]
    70
    71 addlist_notime=[i for i in scanset_notime-fileset_notime]
    72 addlist=[]
    73 for item in addlist_notime:
    74 mtime = time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(os.stat(item).st_mtime))
    75 addlist.append(item+------+mtime+\n
    76
    77 modifylist=[i for i in scanset-fileset]
    78 modifylist=[i for i in set(modifylist)-set(addlist)]
    79
    80 sendstr=
    81
    82 write list,addlist,modifylist to changefile and mail to manager
    83 if list.__len__() > 0:
    84 fchange=open(changeFile,a
    85 title=\n+time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(time.time()))+ d files \n
    86 fchange.write(title)
    87 sendstr+=title
    88 i=0
    89 for file in list:
    90
    91 if .js in file:
    92 try:
    93 fchange.write(str(i)+ +js: +file.encode(utf-8).decode(gbk)+\n change_file
    94 except:
    95 fchange.write(str(i)+ +js: +file+\n change_file
    96 sendstr+=str(i)+ +js: +file+\n
    97
    98 elif index. in file:
    99 try:
    100 fchange.write(str(i)+ +index: +file.encode(utf-8).decode(gbk)+\n change_file
    101 except:
    102 fchange.write(str(i)+ +index: +file+\n change_file
    103 sendstr+=str(i)+ +index: +file+\n
    104
    105 else:
    106 try:
    107 fchange.write(str(i)+ +file.encode(utf-8).decode(gbk)+\n change_file
    108 except:
    109 fchange.write(str(i)+ +file+\n change_file
    110 sendstr+=str(i)+ +file+\n
    111
    112 i+=1
    113 fchange.close()
    114
    115 if addlist.__len__() > 0:
    116 fchange=open(changeFile,a
    117 title=\n+time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(time.time()))+ added files \n
    118 fchange.write(title)
    119 sendstr+=title
    120 i=0
    121 for addfile in addlist:
    122
    123 if .js in addfile:
    124 try:
    125 fchange.write(str(i)+ +js: +addfile.encode(utf-8).decode(gbk)) change_file
    126 except:
    127 fchange.write(str(i)+ +js: +addfile) change_file
    128 sendstr+=str(i)+ +js: +addfile
    129
    130 elif index. in addfile:
    131 try:
    132 fchange.write(str(i)+ +index: +addfile.encode(utf-8).decode(gbk)) change_file
    133 except:
    134 fchange.write(str(i)+ +index: +addfile) change_file
    135 sendstr+=str(i)+ +index: +addfile
    136
    137 else:
    138 try:
    139 fchange.write(str(i)+ +addfile.encode(utf-8).decode(gbk)) change_file
    140 except:
    141 fchange.write(str(i)+ +addfile) change_file
    142 sendstr+=str(i)+ +addfile
    143
    144 i+=1
    145 fchange.close()
    146
    147 if modifylist.__len__()>0:
    148 fchange=open(changeFile,a
    149 title=\n+time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(time.time()))+ modified files \n
    150 fchange.write(title)
    151 sendstr+=title
    152 i=0
    153 for modifyfile in modifylist:
    154
    155 if .js in modifyfile:
    156 try:
    157 fchange.write(str(i)+ +js: +modifyfile.encode(utf-8).decode(gbk)) change_file
    158 except:
    159 fchange.write(str(i)+ +js: +modifyfile) change_file
    160 sendstr+=str(i)+ +js: +modifyfile
    161
    162 elif index. in modifyfile:
    163 try:
    164 fchange.write(str(i)+ +index: +modifyfile.encode(utf-8).decode(gbk)) change_file
    165 except:
    166 fchange.write(str(i)+ +index: +modifyfile) change_file
    167 sendstr+=str(i)+ +index: +modifyfile
    168
    169 else:
    170 try:
    171 fchange.write(str(i)+ +modifyfile.encode(utf-8).decode(gbk)) change_file
    172 except:
    173 fchange.write(str(i)+ +modifyfile) change_file
    174 sendstr+=str(i)+ +modifyfile
    175
    176 i+=1
    177 fchange.close()
    178
    179 if sendstr.__len__()>0:
    180 self.sendMail(sendstr)send changefile to mail
    181
    182
    183 def sendMail(self,body):
    184 m=MIMEMultipart()
    185 m[]=TiaoZhanServer
    186 m[subject]=file_record__botwarden210
    187 m.attach(MIMEText(body,plainutf-8))charset
    188
    189 smtpserver=smtplib.SMTP(smtp.163.com
    190 smtpserver.login(tiaozhanfilerecord@163.comtiaozhan
    191 add=tiaozhanfilerecord@163.com
    192 toadds=[xxxxxxx@qq.com]
    193 for toadd in toadds:
    194 m[to]=toadd
    195 smtpserver.sendmail(add, toadd, m.as_string())
    196 smtpserver.close()
    197
    198 if __name__ == __main__:
    199 Dir = /home/www
    200 whiteDir=[cachedata]
    201 myFile = /home/zsy/FileRecord_py/file_record.txt
    202 changeFile=/home/zsy/FileRecord_py/file_change_record.txt
    203
    204 Dir = e:\\
    205 whiteDir=[myeclipseworkspace]
    206 myFile = e:\\file_record.txt
    207 changeFile=e:\\file_change_record.txt
    208
    209 scanner=Scanner()
    210 if scanner.isExists(myFile):
    211 scanner.rescan(Dir,whiteDir,myFile,changeFile)
    212 else:
    213 scanner.scan(Dir,whiteDir,myFile)


    首要用于监控web办事器上的web目次,防止被黑客批改文件或上传小马用。


    file_record.txt用于记录当前目次下的所有文件。


    file_change_record.txt用于记录本次扫描相对于前次扫描产生的改变。


    完了会发邮件给指定的经管员邮箱。


    后来知道linux下有本身的监控对象可以用,安装一下很便利。
    http://www.cnblogs.com/peterpanzsy/archive/2013/05/18/3084961.html


    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: