加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python2监控多源复制状态并发邮件

发布时间:2020-12-20 10:46:17 所属栏目:Python 来源:网络整理
导读:我们环境中用到了多源复制,因此写个查看状态的Python脚本,python为系统中自带的2.6.6,邮件内容为html格式,隔行变色,脚本如下: # -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport date
我们环境中用到了多源复制,因此写个查看状态的Python脚本,python为系统中自带的2.6.6,邮件内容为html格式,隔行变色,脚本如下:

# -*- coding: UTF-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import datetime
import MySQLdb
date_end = datetime.date.today()
html_part1 = """
<html>
  <head></head>
  <body><h2>Report of 10.10.100.10 multi source repl status {current_time}</h2>
    <table border="1" bordercolor="#000000" width="350"  style="width:85%;BORDER-COLLAPSE: collapse" >
        <tbody>
            <tr style="color:White" bgColor=#0066CC>
                <th>Master_Host</th>
                <th>Slave_IO_Running</th>
                <th>Slave_SQL_Running</th>
                <th>Seconds_Behind_Master</th>
                <th>Channel_Name</th>
            </tr>
""".format(current_time=date_end)

html_part2 = """
  </body>
</html>
"""
td_bgcolor_num = 1
db = MySQLdb.connect("10.10.100.10","mysqldba","mysql-dba-168" )
cursor = db.cursor()
cursor.execute("show slave status")
results = cursor.fetchall()

with open(‘/tmp/slavesof10010.html‘,mode=‘w‘) as f:
    f.write(html_part1)
    for row in results:
        Master_Host = row[1]
        Slave_IO_Running = row[10]
        Slave_SQL_Running = row[11]
        Seconds_Behind_Master = row[32]
        Channel_Name = row[-2]
        if td_bgcolor_num%2==0:
            td_bgcolor=‘#F0F0F0‘
        else:
            td_bgcolor=‘#FFFFCE‘
        td_bgcolor_num += 1

        pro = ‘‘‘
        <tr bgcolor="‘‘‘+td_bgcolor+‘‘‘" align="center" >
            <td style="width: 20%;">‘‘‘+ row[1].encode(‘utf-8‘,‘ignore‘) + "</td>" + ‘‘‘
            <td style="width: 15%;">‘‘‘+ row[10].encode(‘utf-8‘,‘ignore‘) + "</td>" + ‘‘‘
            <td style="width: 15%;">‘‘‘+ row[11].encode(‘utf-8‘,‘ignore‘) + "</td>" + ‘‘‘
            <td style="width: 15%;">‘‘‘+ str(row[32]) + "</td>" + ‘‘‘
            <td style="width: 20%;">‘‘‘+ Channel_Name + ‘‘‘</td>
        </tr>
        ‘‘‘
        f.write(pro)
    f.write(html_part2)
db.close()

mail_host="smtp.xxxx.com"
sender = ‘[email?protected]‘
receivers = [‘[email?protected]‘,‘[email?protected]‘,‘[email?protected]‘,‘[email?protected]‘]

with open(‘/tmp/slavesof10010.html‘,mode=‘r‘) as f:
    html=f.read()

message = MIMEText(html,‘html‘)
message[‘From‘] = Header("[email?protected]")
message[‘To‘] = Header(";".join(v for v in receivers))
subject = ‘multi-source-repl of 100.10汇总‘
message[‘Subject‘] = Header(subject,‘utf-8‘)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host,25)    # 25 为 SMTP 端口号
    smtpObj.sendmail(sender,receivers,message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException as e:
    print "Error: 无法发送邮件",print e

计划任务

00 09 * * * python /server/scripts/get_html_10010.py &> /dev/null

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读