加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python检查 文件备份是否正常 云备份进程是否正常运行

发布时间:2020-12-20 10:54:37 所属栏目:Python 来源:网络整理
导读:场景:服务器自动备份数据库文件,每两小时生成一个新备份文件,通过云备份客户端自动上传,需要每天检查是否备份成功。 实现:本脚本实现检查文件是否备份成功,进程是否正常运行,并且发送相关邮件提醒。 ? #! /usr/bin/env pythonimport osimport timeimp

场景:服务器自动备份数据库文件,每两小时生成一个新备份文件,通过云备份客户端自动上传,需要每天检查是否备份成功。

实现:本脚本实现检查文件是否备份成功,进程是否正常运行,并且发送相关邮件提醒。

?

#! /usr/bin/env python

import os
import time
import smtplib

from email.mime.text import MIMEText
from email.header import Header

from configparser import ConfigParser


def SendMail(server,sender,pwd,receiver,msg):
    ‘‘‘
    Conncet to Office365 mail server and sent emails
    
    ‘‘‘
    email = smtplib.SMTP(server,587)
    email.starttls()
    email.ehlo(server)
    email.login(sender,pwd)
    email.sendmail(sender,msg)
    email.quit()
    
    
def GetNewFiles(path,num):
    ‘‘‘
    Get file lists and return the last num created files
    
    ‘‘‘
    lists = os.listdir(path)
    lists.sort(key=lambda fn:os.path.getctime(path+‘‘+fn))
    
    return lists[-num : ]
    
def CheckProcess(name):
    ‘‘‘
    Check if the process exits and return result.
    
    [‘n‘,‘Image Name                     PID Session Name        Session#    Mem Usagen‘,‘========================= ======== ================ =========== ============n‘,‘Dropbox.exe                  20484 Console                    1     71,652 Kn‘,‘Dropbox.exe                  23232 Console                    1      2,456 Kn‘,‘Dropbox.exe                  61120 Console                    1      2,168 Kn‘]
    
    ‘‘‘
    proc = []
    p = os.popen(‘tasklist /FI "IMAGENAME eq %s"‘ % name)
    for x in p:
        proc.append(x)
    p.close()
    return proc
    
def MailContent(path,num):
    ‘‘‘
    make the mail contents
    ‘‘‘
    content = []
    
    dropbox = CheckProcess(‘dropbox.exe‘)
    carboniteservice = CheckProcess(‘carboniteservice.exe‘)
    
    #IF process doesn‘t run 
    if len(dropbox) < 2 or len(carboniteservice) < 2 :
        content.append("Dropbox or CarBonite doesn‘t run")
        s = ‘nt‘.join(dropbox) + ‘nn‘ + ‘nt‘.join(carboniteservice)
        content.append("Process Check Result:nt" + s)
        return content
    
    #Check if the backup files are correct.
    files = GetNewFiles(path,num)
    file_ctime = os.path.getctime(path + ‘‘ + files[0])
    now = time.time() - 86400
    
    if file_ctime > now :
        content.append("DB Backup Successfull")
        body = "nThe Backup files are:nt" + ‘nt‘.join(files)
        content.append(body)
        return content
    else :
        content.append("DB Backup Failed")
        body = "nThe last backup sucessfull file is " + files[-1]
        content.append(body)
        return content
        

    
def main():
    
    #server = ‘smtp.office365.com‘
    #sender = ‘[email?protected]‘
    #receiver = [‘[email?protected]‘,‘[email?protected]‘]
    #pwd = ‘Netbrain12‘
    
    config = ConfigParser()
    config.read_file(open(‘config.ini‘))
    path = config.get(‘os‘,‘path‘)
    receiver = config.get(‘email‘,‘receiver‘)
    server = config.get(‘email‘,‘server‘)
    sender = config.get(‘email‘,‘sender‘)
    pwd = config.get(‘email‘,‘pwd‘)
    
    content = MailContent(path,12)
    #content = MailContent("D:test",6)
    mail_content = content[1]
    
    msg = MIMEText(mail_content,"plain","utf-8")
    msg["Subject"] = Header(content[0],"utf-8")
    msg["From"] = sender
    msg["To"] = Header(receiver)
    
    SendMail(server,receiver.split(‘,‘),msg.as_string())

if __name__ == ‘__main__‘:
    main()

  

ini配置文件内容

[os]
path=D:test

[email]
server=smtp.office365.com
[email?protected]
pwd=xxxxx
[email?protected],[email?protected]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读