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语言的12个基础知识点小结
Jul 10 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
python实现通过shelve修改对象实例
Sep 26 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
python密码错误三次锁定(实例讲解)
Nov 14 Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
python实现批量nii文件转换为png图像
Jul 18 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
python实现超市管理系统(后台管理)
Oct 25 Python
Python requests.post方法中data与json参数区别详解
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中神奇的fastcgi_finish_request
2011/05/02 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python装饰器初探(推荐)
2016/07/21 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
工作人员思想汇报
2014/01/09 职场文书
个人简历自荐信
2014/06/26 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
2015年路政工作总结
2015/05/22 职场文书
公司环境卫生管理制度
2015/08/05 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
TS 类型兼容教程示例详解
2022/09/23 Javascript