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服务器端收发请求的实现代码
Sep 29 Python
利用Python获取操作系统信息实例
Sep 02 Python
Python统计单词出现的次数
Apr 04 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
浅谈python3发送post请求参数为空的情况
Dec 28 Python
python远程邮件控制电脑升级版
May 23 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python实现图片压缩代码实例
Aug 12 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
Python中私有属性的定义方式
Mar 05 Python
python实现图片横向和纵向拼接
Mar 05 Python
详解python metaclass(元类)
Aug 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
php date与gmdate的获取日期的区别
2010/02/08 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python 自动提交和抓取网页
2009/07/13 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
运动会入场词50字
2014/02/20 职场文书
安全目标责任书
2014/07/22 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
MySQL数据库 安全管理
2022/05/06 MySQL