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中用has_key()方法查找键是否存在的教程
May 21 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
django解决跨域请求的问题详解
Jan 20 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
python word转pdf代码实例
Aug 16 Python
python pygame实现挡板弹球游戏
Nov 25 Python
使用python实现数组、链表、队列、栈的方法
Dec 20 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
Python进度条的使用
May 17 Python
pandas中DataFrame数据合并连接(merge、join、concat)
May 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中文汉字验证码
2007/04/08 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
vue组件的写法汇总
2018/04/12 Javascript
vue.js中实现登录控制的方法示例
2018/04/23 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
layui table数据修改的回显方法
2019/09/04 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
Python中的类与对象之描述符详解
2015/03/27 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
学校后勤工作总结2015
2015/05/15 职场文书
初中物理教学反思
2016/02/19 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
详解Python中下划线的5种含义
2021/07/15 Python