- 需求:
利用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)


#!/usr/bin/env python #coding:utf-8import smtplib from email.mime.text import MIMETextdef send(content,title,froms,*to):msg = MIMEText(content,"plain","utf-8")msg["Subject"]= titlemsg["From"]= fromsmsg["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)'''
3.實戰監控 /etc 目錄下的文件修改
修改/etc/passwd文件
python腳本程序檢查到修改后發送報警郵件