python

超轻量级php框架startmvc

Python检查 云备份进程是否正常运行代码实例

更新时间:2020-07-26 04:06:01 作者:startmvc
这篇文章主要介绍了Python检查云备份进程是否正常运行代码实例,文中通过示例代码介绍的

这篇文章主要介绍了Python检查 云备份进程是否正常运行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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


#! /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,receiver,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 Usage\n', '========================= ======== ================ =========== ============\n', 'Dropbox.exe 20484 Console 1 71,652 K\n', 'Dropbox.exe 23232 Console 1 2,456 K\n', 'Dropbox.exe 61120 Console 1 2,168 K\n']
 
 '''
 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 = '\n\t'.join(dropbox) + '\n\n' + '\n\t'.join(carboniteservice)
 content.append("Process Check Result:\n\t" + 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:\n\t" + '\n\t'.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 = 'online@netbraintech.com'
 #receiver = ['gavin.yuan@netbraintech.com' , 'feng.liu@netbraintech.com']
 #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,sender,pwd,receiver.split(','),msg.as_string()) 
if __name__ == '__main__':
 main()

ini配置文件内容


[os]
path=D:\test
[email]
server=smtp.office365.com
sender=xxxx@outlook.com
pwd=xxxxx
receiver=xx@outlook.com,xxxxx@gmail.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python 检查 云备份进程 正常运行