Mysql主从检测脚本

#!/usr/bin/env python 


#Kiss Python 


#*/10 * * * * /usr/bin/python /root/checkslave.py


import MySQLdb

import time

import paramiko



###############################################

#                 slavelist                                                                     #

#                                                                                                   #

#    IPS:Username:Password:                                                        #  

#    172.16.13.61:zabbix:zabbix:                                                    #  

#    172.16.13.192:zabbix:zabbix:                                                  #  

#                                                                                                    #

###############################################




mailcontact = '[email protected]','[email protected]'

mobilecontact = '18701669895'

checkslave = open('slavelist')

checklog = open('slave.log','a')


def checksql(host,user,password):

    conn=MySQLdb.connect(host=host,user=user,passwd=password)

    cur=conn.cursor(MySQLdb.cursors.DictCursor)

    cur.execute("show slave status;")

    sql=cur.fetchall()

    cur.close()

    checklog.write(str(time.strftime('%Y-%m-%d %H:%M',time.localtime(time.time())))+"  ")


    if sql[0]['Slave_IO_Running'] == 'Yes' and sql[0]['Slave_SQL_Running'] == 'Yes':

        checklog.write(str(host) + "\t" + " Check DBSlave OK !" + "\n")

    else:

        connect = paramiko.SSHClient()

        connect.set_missing_host_key_policy(paramiko.AutoAddPolicy())

        connect.connect('172.16.5.114', 22, username='root', password='ziroom1701R&D', timeout=6)

        stdin, stdout, stderr = connect.exec_command('printf "%s ZraDBSlave Error !\n\nMaster_Host: %s\nSlave_IO_Running: %s\n\

Slave_SQL_Running: %s"| mail -s "ZraDBSlave Error" %s'\

                % (host,sql[0]['Master_Host'],sql[0]['Slave_IO_Running'],sql[0]['Slave_SQL_Running'],mailcontact))

stdin, stdout, stderr = connect.exec_command('cd /home/weiyiqiang/fetion;LD_LIBRARY_PATH=. ./fetion --mobile=18701669895 \

--pwd=password--to=%s --msg-utf8="ZraDBSlave Error!\n\nMaster_Host: %s\nSlave_IO_Running: %s\nSlave_SQL_Running: %s"' \

% (mobilecontact,sql[0]['Master_Host'],sql[0]['Slave_IO_Running'],sql[0]['Slave_SQL_Running']))

        connect.close()

        checklog.write(str(host) + "\t" +" Check DBSlave Error Send Message to  %s !" % mobilecontact + "\n")





for line in checkslave:

    ip = str(line.split(':')[0])

    username = str(line.split(':')[1])

    password = str(line.split(':')[2])

    checksql(ip,username,password)






checklog.close()

checkslave.close()


你可能感兴趣的:(python,检测)