import os import time import sched import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication # 第一個參數肯定任務的時間,返回從某個特定的時間到如今經歷的秒數 # 第二個參數以某種人爲的方式衡量時間 schedule = sched.scheduler(time.time, time.sleep) def backupsDB(): cmdString = 'E:/BCSoft/mysql-8.0.15-winx64/bin/mysqldump -hlocalhost -uroot -p123456 kzxtms > c:/mysqlbackup/kzxtms_backup.sql' os.system(cmdString) def sendMail(): _user = "xxxxxx0@xxx.com" # 發送者的郵箱 _pwd = "xxxxx" # 發送者的密碼 網易郵箱必須採用受權碼 而不是密碼 _to = "xxxxxx@xxxx.com" # 接收者的郵箱 # 如名字所示Multipart就是分多個部分 msg = MIMEMultipart() msg["Subject"] = "石黃高速智能灌溉系統數據庫備份" msg["From"] = _user msg["To"] = _to # ---這是文字部分--- part = MIMEText("石黃高速智能灌溉系統數據庫備份") msg.attach(part) # ---這是附件部分--- # 類型附件 part = MIMEApplication( open('c:/mysqlbackup/kzxtms_backup.sql', 'rb').read()) part.add_header('Content-Disposition', 'attachment', filename="kzxtms_backup.sql") msg.attach(part) s = smtplib.SMTP("smtp.163.com", timeout=30) # 鏈接smtp郵件服務器,端口默認是25 s.login(_user, _pwd) # 登錄服務器 s.sendmail(_user, _to, msg.as_string()) # 發送郵件 s.close() def perform_command(cmd, inc): # 安排inc秒後再次運行本身,即週期運行 schedule.enter(inc, 0, perform_command, (cmd, inc)) os.system(cmd) backupsDB() sendMail() def timming_exe(cmd, inc=60): # enter用來安排某事件的發生時間,從如今起第n秒開始啓動 schedule.enter(inc, 0, perform_command, (cmd, inc)) # 持續運行,直到計劃時間隊列變成空爲止 schedule.run() if __name__ == '__main__': print("show time after 10 seconds:") timming_exe("echo %time%",86400) # 每間隔86400秒備份發送郵件 86400秒=1天