首页 > 编程 > Python > 正文

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

2019-11-25 11:53:34
字体:
来源:转载
供稿:网友

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

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

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

#! /usr/bin/env pythonimport osimport timeimport smtplibfrom email.mime.text import MIMETextfrom 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.comsender=xxxx@outlook.compwd=xxxxxreceiver=xx@outlook.com,xxxxx@gmail.com

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表