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制作小说爬虫实录
Aug 14 Python
Python实现自动上京东抢手机
Feb 06 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python ddt数据驱动最简实例代码
Feb 22 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
django foreignkey(外键)的实现
Jul 29 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
pytorch 自定义数据集加载方法
Aug 18 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
浅谈php优化需要注意的地方
2014/11/27 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
jquery插件之easing使用
2010/08/19 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
requirejs + vue 项目搭建详解
2017/06/16 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
Angular2进阶之如何避免Dom误区
2018/04/02 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
2015/03/19 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python 探针的实现原理
2016/04/23 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
给我一面国旗 python帮你实现
2019/09/30 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
五年级数学教学反思
2014/02/11 职场文书
金融与证券专业求职信
2014/06/22 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang