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中的__new__()方法的使用
Apr 09 Python
Python常用小技巧总结
Jun 01 Python
Python通过select实现异步IO的方法
Jun 04 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
python学习之matplotlib绘制散点图实例
Dec 09 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
python 自动重连wifi windows的方法
Dec 18 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
基于matplotlib xticks用法详解
Apr 16 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 Python
如何使用python包中的sched事件调度器
Apr 30 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中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
javascript获取元素的计算样式
2019/05/24 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python监控文件或目录变化
2016/06/07 Python
Python中is与==判断的区别
2017/03/28 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
秘书岗位职责
2013/11/18 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
护士个人自我鉴定
2014/03/24 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
个人求职自荐信范文
2014/06/20 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android