拿Python寫了一個備份結果監控程序

1、背景說明

前段時間爲公司制定了一套備份解決方案

需要每天被告知備份是否OK

2、流程

wKioL1kC_F6xWnhLAABYFnavzrY840.png

3、代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import smtplib
import email.mime.multipart
import email.mime.text
import time
import subprocess


def mailalter(user,receivers,subject,servername,status):
    msg=email.mime.multipart.MIMEMultipart()
    msg['from']='demo@demo'
    msg['to']= user
    msg['subject']= subject

    content = '''
Dear ITers:
    %s bakcup status %s

##Powered by voidyao000##
##Life is short,you need python!##
    '''%(servername,status)


    txt=email.mime.text.MIMEText(content)
    msg.attach(txt)

    smtp=smtplib
    smtp=smtplib.SMTP()
    smtp.connect('*.*.*.*','25')
    #注意點:這裏的receivers是列表字符串
    smtp.sendmail('demo@demo',receivers,str(msg))
    smtp.quit()

def chkbak(servername):
    user = 'demo@demo,demo2@demo'
    receivers = ['demo@demo','demo2@demo',]
    subjectok = '%s %sbackup OK'%(time.strftime("%Y-%m-%d"),servername)
    subjectfail = '%s %sbackup fail'%(time.strftime("%Y-%m-%d"),servername)
    bakdate = time.strftime("%y%m%d")
    logfile = '/home/%sbackup/%sbak%s.log' %(servername,servername,bakdate)
    cmd = 'tail -1 %s' %(logfile)
    cmd_call = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
    cmd_result = str(cmd_call.stdout.read(),'utf8').strip()
    chk_line = '%s backup sucessful'%(servername)
    if chk_line ==cmd_result:
        status = 'ok'
        print('backup ok')
        mailalter(user,receivers,subjectok,servername,"OK")
    else:
        status = 'fail'
        print("backup fail")
        mailalter(user,receivers,subjectfail,servername,"Fail")
chkbak("servername")


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章