利用Python監測MySQL主從狀態

    探測MySQL主從狀態,如果從未同步,則發郵件通知運維人員。利用定時任務秒級監測!

# -*- coding: utf-8 -*  #! /usr/bin/env python    from fabric.api import *  from fabric.colors import *  from fabric.context_managers import *  from fabric.contrib.console import confirm  import string  import smtplib    #client ip  env.port='9527'  env.user='dyt'  env.hosts=['192.168.129.138','192.168.129.139']  env.password='dyt2015'    #env.mysql_port = '3306'    @task  def 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 statusG'|grep Slave_IO_Running:|awk '{print $2}'")      slave_sql = run("mysql -uroot -S /tmp/mysql_3306.sock -e 'show slave statusG'|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 = "[email protected]"  	    FROM = "[email protected]"  	    text = "%-20s MySQL Master-Slave status : down" % slave_ip   	    BODY = string.join((              "From: %s" % FROM,              "To: %s" % TO,              "Subject: %s" % SUBJECT ,              "",              text              ), "rn")  	    server = smtplib.SMTP()  	    server.connect(HOST,"25")  	    server.starttls()  	    server.login("[email protected]","password")  	    server.sendmail(FROM, [TO], BODY)  	    server.quit()