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显示天气预报
Mar 02 Python
Python数据结构之Array用法实例
Oct 09 Python
在Python中使用SimpleParse模块进行解析的教程
Apr 11 Python
Python计算一个文件里字数的方法
Jun 15 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python应用库大全总结
May 30 Python
python利用百度AI实现文字识别功能
Nov 27 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Tensorflow限制CPU个数实例
Feb 06 Python
Python用input输入列表的实例代码
Feb 07 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中如何调用webservice的实例参考
2013/04/25 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
php使用codebase生成随机数
2014/03/25 PHP
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python随机数random模块使用指南
2016/09/09 Python
python logging日志模块以及多进程日志详解
2018/04/18 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
销售业务实习自我鉴定
2013/09/23 职场文书
企业行政文员岗位职责
2013/12/03 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
公证书标准格式
2014/04/10 职场文书
工程承诺书怎么写
2014/05/24 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
spring cloud 配置中心客户端启动遇到的问题
2021/09/25 Java/Android