#!/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()