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


Posted in Python onAugust 22, 2019

这篇文章主要介绍了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 相关文章推荐
Python中的Numeric包和Numarray包使用教程
Apr 13 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
Python中GIL的使用详解
Oct 03 Python
python获取url的返回信息方法
Dec 17 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
爬虫代理池Python3WebSpider源代码测试过程解析
Dec 20 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
python 制作python包,封装成可用模块教程
Jul 13 Python
浅谈Python 递归算法指归
Aug 22 #Python
python求加权平均值的实例(附纯python写法)
Aug 22 #Python
python求平均数、方差、中位数的例子
Aug 22 #Python
python2和python3实现在图片上加汉字的方法
Aug 22 #Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 #Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 #Python
Python实现的微信红包提醒功能示例
Aug 22 #Python
You might like
用PHP编写和读取XML的几种方式
2013/01/12 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
PHP将HTML转换成文本的实现代码
2015/01/21 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
2010/05/10 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
详细解读Python中解析XML数据的方法
2015/10/15 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
Ajxa常见问题都有哪些
2014/03/26 面试题
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
医务人员自我评价
2014/01/26 职场文书
空气环保标语
2014/06/12 职场文书
表扬信范文
2015/05/04 职场文书
教学反思怎么写
2016/02/24 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python