利用python腳本程序監控文件被修改


  1. 需求:

利用python編寫監控程序,監控一個文件目錄,當目錄下的文件發生改變時,實現有修改就發報警郵件

郵件使用QQ郵箱,需要開啟smtp,使用手機發生短信,騰訊會給你發郵箱密碼。如下所示:

把這個密碼填到程序中。

python版本

[root@ftp day01]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

2.程序代碼如下:

[root@ftp day01]# cat montest.py  sendMail.py

#!/usr/bin/env python
#coding:utf-8
import sys
import pyinotify
from sendMail import send
try:
    path = sys.argv[1]
except:
    raise(AttributeError("has no attribute path"))
class MyEvent(pyinotify.ProcessEvent):
    def process_IN_MODIFY(self,event):
        '''print("hell world")
        print ("%s be chandg "event.name)
        '''
        content = "%s be change" %(path+event.name)
        title = "refine's mail"
        froms = "11111111@qq.com"  '''發郵件賬號'''
        to = "22222222@qq.com"      '''接收郵件賬號'''

        send(content,title,froms,to)
        print (content)

def main(path):
    vm = pyinotify.WatchManager()
    vm.add_watch(path,pyinotify.ALL_EVENTS,rec = True)
    event = MyEvent()
    notifier = pyinotify.Notifier(vm,event)
    notifier.loop()
main(path)
View Code
#!/usr/bin/env python
#coding:utf-8

import smtplib
from email.mime.text import MIMEText

def send(content,title,froms,*to):
    msg = MIMEText(content,"plain","utf-8")
    msg["Subject"]= title
    msg["From"]= froms
    msg["To"] = ",".join(to)

    server = smtplib.SMTP_SSL("smtp.qq.com",465)
    server.login("11111111@qq.com","zqyricvcbed") '''此處寫你發郵件的qq和密碼'''
    server.sendmail(froms,list(to),msg.as_string())
    server.quit()
    
if __name__ == '__main__':
     '''
     content = "hello I am alvin"
     title = "alvin's  mail"
     froms = "11111111@qq.com"
     to = "22222222@qq.com"
     send(content,title,froms,to)
     '''
View Code

3.實戰監控 /etc 目錄下的文件修改

修改/etc/passwd文件

python腳本程序檢查到修改后發送報警郵件

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM