网络编程
位置:首页>> 网络编程>> Python编程>> Python检查 云备份进程是否正常运行代码实例

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

作者:星拂晓空  发布时间:2023-07-08 23:59:05 

标签: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

来源:https://www.cnblogs.com/xingfuxiaokong/p/11393387.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com