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 = '*****'
#receiver = ['****' , '****']
#pwd = '****' 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检查 文件备份是否正常 云备份进程是否正常运行的更多相关文章
- [Windows Server 2008] 搭建数据云备份
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何搭建数 ...
- Microsoft云备份解决方案Azure Backup的常见配置问题
这篇博客文章有助于解决 Microsoft云备份解决方案(即 Azure Backup)的常见配置问题.客户通常会在安装或注册 Azure Backup时遇到这些问题.以下是有关如何诊断和解决问题的建 ...
- linuxserver本地和百度云备份脚本小试
本地单文件上传脚本.命名uf 这是在本机上做的測试,利用bpcs_uploader脚本实现,仅仅是进行简单的封装.自己主动完好云端文件路径. 技术要点:使用dirname获取文件所在文件夹.使用pwd ...
- windows下python检查文件是否被其它文件打开
windows下python检查文件是否被其它文件打开.md 有时候我们需要能够判断一个文件是否正在被其它文件访问,几乎不可避免的要调用操作系统接口 from ctypes import cdll i ...
- python并发编程之Queue线程、进程、协程通信(五)
单线程.多线程之间.进程之间.协程之间很多时候需要协同完成工作,这个时候它们需要进行通讯.或者说为了解耦,普遍采用Queue,生产消费模式. 系列文章 python并发编程之threading线程(一 ...
- Python 3 并发编程多进程之守护进程
Python 3 并发编程多进程之守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemo ...
- shell脚本监控k8s集群job状态,若出现error通过触发阿里云的进程监控报警
#!/bin/bash while [ 1 ] do job_error_no=`kubectl get pod -n weifeng |grep -i "job"|grep -c ...
- shell脚本监控阿里云专线网络状态,若不通通过触发阿里云的进程监控报警
#!/bin/bash while [ 1 ] do rtt=`ping -c 3 15.0.160.18 |grep rtt |awk '{print $4}' |awk -F'/' '{print ...
- Python检查数组元素是否存在类似PHPisset()方法
Python检查数组元素是否存在类似PHP isset()方法 sset方法来检查数组元素是否存在,在Python中无对应函数,在Python中一般可以通过异常来处理数组元素不存在的情况,而无须事先检 ...
随机推荐
- 没想到吧,Java开发 API接口可以不用写 Controller了
本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...
- 01-MySQL Linux安装
一.检查当前系统是否安装过mysql rpm -qa|grep mysql 或 ps -ef|grep mysql 二.安装mysql服务端 rpm -ivh MySQL-server-5.5.48- ...
- JavaWeb 补充(XML)
XML 1. 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的. <user> <student> 功能: 存储数据 ...
- JAVAEE_01_什么是javaEE
javaEE Java平台包含三个版本: - JavaME :适用于小型设备和智能卡的JavaME (Java Platform Micro Edition,Java微型版) - JavaSE : 适 ...
- Day13_70_join()
join() 方法 * 合并线程 join()线程合并方法出现在哪,就会和哪个线程合并 (此处是thread和主线程合并), * 合并之后变成了单线程,主线程需要等thread线程执行完毕后再执行,两 ...
- Asp.Net Core&CAP实现分布式事务
需要注意的是标题中的CAP不是指的CAP理论,而是园区大神杨晓东实现的框架,CAP框架基于本地消息表用最终一致性实现分布式事务. 本地消息表 首先我们考虑一个场景,在将用户信息更改后,需要发送一条消息 ...
- EasyCode Entity 实体类模板 IDEA
自己修改了一份EasyCode的实体类模板,防止日后找不到在这里存一下 修改了如下内容: 取消生成GetSet方法,改用Lombok 修改默认命名规则,改为[表名Entity.java] 取消了实现序 ...
- 1082 Read Number in Chinese
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese ...
- php读取目录下的所有文件
php读取目录下的所有文件 $path = './use'; $result = scanFile($path); function scanFile($path) { global $result; ...
- php中var关键字用法
见很多朋友说在php中定义变量用不用var都没关系,其实不然. 看看例子,如果我这样使用var: 1 var $a=123; 2 echo $a; 3 //那么程序会提示语法错误,要去掉var这个变量 ...