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使用htpasswd实现基本认证授权的例子
Jun 10 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
python实现Dijkstra静态寻路算法
Jan 17 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Python数据可视化图实现过程详解
Jun 12 Python
python通过函数名调用函数的几种场景
Sep 23 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
Opencv 图片的OCR识别的实战示例
Mar 02 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
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
checkbox选中与未选中判断示例
2014/08/04 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
django中瀑布流写法实例代码
2019/10/14 Python
Python基于Socket实现简易多人聊天室的示例代码
2020/11/29 Python
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
安全标准化实施方案
2014/02/20 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript