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 27 Python
整理Python中的赋值运算符
May 13 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
python字符串的方法与操作大全
Jan 30 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Python matplotlib绘制雷达图
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
域名查询代码公布
2006/10/09 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
PHP添加Xdebug扩展的方法
2014/02/12 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
react antd表格中渲染一张或多张图片的实例
2020/10/28 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python模拟百度登录实例详解
2016/01/20 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
python实现移位加密和解密
2019/03/22 Python
python定义类self用法实例解析
2020/01/22 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
儿科主治医生个人求职信
2013/09/23 职场文书
自我鉴定模板
2013/10/29 职场文书
绩效专员岗位职责
2013/12/02 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
观后感开头
2015/06/19 职场文书
手残删除python之后的补救方法
2021/06/26 Python