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实现堆排序的方法详解
May 03 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
python与caffe改变通道顺序的方法
Aug 04 Python
python实现爬山算法的思路详解
Apr 09 Python
Python同时处理多个异常的方法
Jul 28 Python
用Python实现职工信息管理系统
Dec 30 Python
python删除csv文件的行列
Apr 06 Python
python实现socket简单通信的示例代码
Apr 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
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
PHP比你想象的好得多
2014/11/27 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
自制PHP框架之设计模式
2017/05/07 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
JavaScipt中栈的实现方法
2016/02/17 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
ECMAScript6快速入手攻略
2016/07/18 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
python版简单工厂模式
2017/10/16 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
英国行业制服供应商:Alexandra
2019/09/14 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
Linux文件操作命令都有哪些
2015/02/27 面试题
大学生开西餐厅创业计划书
2014/02/01 职场文书
四年级评语大全
2014/04/21 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js
Python创建SQL数据库流程逐步讲解
2022/09/23 Python