探测MySQL主从状态,如果从未同步,则发邮件通知运维人员。利用定时任务秒级监测!

# -*- coding: utf-8 -*#! /usr/bin/env pythonfrom fabric.api import *from fabric.colors import *from fabric.context_managers import *from fabric.contrib.console import confirmimport stringimport smtplib#client ipenv.port='9527'env.user='dyt'env.hosts=['192.168.129.138','192.168.129.139']env.password='dyt2015'#env.mysql_port = '3306'@taskdef check():    slave_ip  = run("ip add|grep global")    for ip in env.hosts:        if ip in slave_ip:            slave_ip = ip    slave_io  = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave status\G'|grep Slave_IO_Running:|awk '{print $2}'")    slave_sql = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave status\G'|grep Slave_SQL_Running:|awk '{print $2}'")     if slave_io == 'Yes' and slave_sql == 'Yes':        pass    else:        HOST = "smtp.qq.com"	    SUBJECT = "MySQL Master-Slave Warning . "	    TO = "test@qq.com"	    FROM = "test@qq.com"	    text = "%-20s MySQL Master-Slave status : down" % slave_ip 	    BODY = string.join((            "From: %s" % FROM,            "To: %s" % TO,            "Subject: %s" % SUBJECT ,            "",            text            ), "\r\n")	    server = smtplib.SMTP()	    server.connect(HOST,"25")	    server.starttls()	    server.login("test@qq.com","password")	    server.sendmail(FROM, [TO], BODY)	    server.quit()