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 相关文章推荐
简单的通用表达式求10乘阶示例
Mar 03 Python
Python中的map、reduce和filter浅析
Apr 26 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
python脚本内运行linux命令的方法
Jul 02 Python
Python实现多并发访问网站功能示例
Jun 19 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
Python模块的加载讲解
Jan 15 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
Python集合操作方法详解
Feb 09 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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:风雨欲来 路在何方?
2006/10/09 PHP
php 文章调用类代码
2011/08/11 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
php实现的http请求封装示例
2016/11/08 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
prototype1.4中文手册
2006/09/22 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
ES6 Iterator接口和for...of循环用法分析
2019/07/31 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python实现命令行通讯录实例教程
2016/08/18 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
python调用百度语音识别api
2018/08/30 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
python配置文件写入过程详解
2019/10/19 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
经理管理专业自荐信范文
2013/12/31 职场文书
婚礼司仪主持词
2014/03/14 职场文书
美术课外活动总结
2014/07/08 职场文书
施工安全协议书范本
2014/09/26 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang