定時對mysql備份 並傳送郵件

2021-08-18 16:17:39 字數 3451 閱讀 8512

import 

osimport

time

import

sched

import

smtplib

from

email.mime.text

import

mimetext

from

email.header

import

header

from

email.mime.multipart

import

mimemultipart

from

import

import

datetime

# 第乙個引數確定任務的時間,返回從某個特定的時間到現在經歷的秒數

# 第二個引數以某種人為的方式衡量時間

schedule

= sched.scheduler(time.time

, time.sleep)

# 資料庫

db_user

= 'root'

# 賬戶

db =

'xx'

db_user_password

= 'password'

# 密碼

today_backup_path

= 'xx'

# 備份名稱、或加上路徑

new_file

= ''

# 組合後的檔名

# 郵箱

_user

= "******@163.com"

# 傳送者的郵箱

_pwd

= "password"

# 傳送者的密碼

_to

= "[email protected]"

# 接收者的郵箱

def

backupsdb():

d =

datetime.datetime.now().strftime(

'%d'

)

# 日是整數儲存檔案加上日期, 否則不加

if d

in [

'01'

, '10'

, '20'

, '30']:

backupsdb_number(d

+ today_backup_path)

else

:backupsdb_number(today_backup_path)

# 備份一次到今天

def

backupsdb_number

(new_file):

"""備份"""

global

new_file

new_file

= new_file

cmdstring

= 'mysqldump -u%s -p%s %s > %s.sql'

% (db_user

, db_user_password

, db

, new_file

) os.system(cmdstring)

def

sendmail():

# 如名字所示multipart就是分多個部分

msg

= mimemultipart()

msg[

"subject"

] =

"資料備份"

msg[

"from"

] =

_user

msg[

"to"

] =

_to

# ---這是文字部分---

part

= mimetext(

"資料庫備份"

) msg.attach(part)

# ---這是附件部分---

# 型別附件

part

= open

('./%s.sql'

% new_file

, 'rb'

).read())

part.add_header(

'content-disposition'

, 'attachment'

, filename

="%s.sql"

% new_file)

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()

try:

sendmail()

except

:with

open

('record.txt'

, 'a'

)as f:

f.write(

str(datetime.datetime.now().strftime(

'%y-%m-%d %h:%m:%s'

)) +

':傳送郵件失敗;\n'

)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:"

)

# 86400 是一天的秒數

timming_exe(

"echo %time%"

, 56400

) # 每間隔56400秒備份傳送郵件

# 46400 基本上是半天

MySQLdump備份並傳送郵件

概述 文件中使用smtp協議,利用qq郵箱傳送郵件,其中客戶端授權碼是在開啟qq郵箱smtp服務是官方給予的,所以要牢記!1 配置smtp linux yum install y mailx 修改配置檔案 vi etc mail.rc 在末尾追加如下內容並儲存 set from x qq.com 設...

定時傳送郵件

香港那邊的公司的erp糸統是bs模式,由於對方公司伺服器環境條件與解決方案要簡單的限制,我和我師傅決定用第三種方法。在程式設計之前,先介紹一下global.asax檔案裡的幾個方法。protected void protected void 下面是具體的做法 protected void new t...

delphi郵件定時傳送

unit smtp inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,idbasecomponent,idcomponent,idtcpconnection...