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 (2)
Oct 31 Python
Python操作SQLite简明教程
Jul 10 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
python实现复制整个目录的方法
May 12 Python
详谈python http长连接客户端
Jun 12 Python
Django项目开发中cookies和session的常用操作分析
Jul 03 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
python 实现简易的记事本
Nov 30 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 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中显示格式化的用户输入
2006/10/09 PHP
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
jquery清空表单数据示例分享
2014/02/13 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
JS中mouseup事件丢失的原因与解决办法
2017/06/14 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
[19:26]TNC vs EG (BO3)
2018/06/07 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python实现Event回调机制的方法
2019/02/13 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Matlab中plot基本用法的具体使用
2020/07/17 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
教师档案管理制度
2014/01/23 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
团队会宣传标语
2014/10/09 职场文书
捐款感谢信
2015/01/20 职场文书