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中操作列表之List.append()方法的使用
May 20 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
PyCharm代码回滚,恢复历史版本的解决方法
Oct 22 Python
Python 多维List创建的问题小结
Jan 18 Python
python中with用法讲解
Feb 07 Python
python字符串下标与切片及使用方法
Feb 13 Python
sklearn+python:线性回归案例
Feb 24 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
Python3爬虫关于识别点触点选验证码的实例讲解
Jul 30 Python
Python尾递归优化实现代码及原理详解
Oct 09 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
一个域名查询的程序
2006/10/09 PHP
PHP define函数的使用说明
2008/08/27 PHP
PHP中phar包的使用教程
2017/06/14 PHP
PHP实现简单的计算器
2020/08/28 PHP
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
js取得url地址参数实例
2013/02/22 Javascript
购物车选中得到价格实现示例
2014/01/26 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
JS设置cookie、读取cookie
2016/02/24 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
Python 深入理解yield
2008/09/06 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
2014年三八妇女节活动方案
2014/02/28 职场文书
个人工作表现自我评价
2015/03/06 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
Python使用scapy模块发包收包
2021/05/07 Python
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏