check datagurad scripts using python

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cx_Oracle  
import string
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
import sys
import getopt
import re

opts, args = getopt.getopt(sys.argv[1:], 'H:')

p = re.compile(r"^((?:(2[0-4]\d)|(25[0-5])|([01]?\d\d?))\.){3}(?:(2[0-4]\d)|(255[0-5])|([01]?\d\d?))$")
ip = opts[0][1]
flag = p.match(ip)
if not flag:
    sys.exit()


mail_host = 'smtp.qq.com'
mail_user = '123123@qq.com'
mail_pwd = '12312312'
to_list = [ '123123@qq.com', '123123123@qq.com' ]


conn = cx_Oracle.connect('read/read@%s/test' % ip)    
cursor = conn.cursor ()  

cursor.execute (''' select max(sequence#) from v$archived_log where dest_id=1 and thread#=%s ''' % '1')  
#rows = cursor.fetchall()  
rows = cursor.fetchone()  
thread1Primary = rows[0]
cursor.execute (''' select max(sequence#) from  v$log_history  where thread#=%s ''' % '1')  
rows = cursor.fetchone()  
thread1Standby = rows[0]

cursor.execute (''' select max(sequence#) from v$archived_log where dest_id=1 and thread#=%s ''' % '2')  
rows = cursor.fetchone()  
thread2Primary = rows[0]
cursor.execute (''' select max(sequence#) from  v$log_history  where thread#=%s ''' % '2')  
rows = cursor.fetchone()  
thread2Standby = rows[0]

#    print (",").join(map(lambda x: str(x),row))
cursor.close ()  
conn.close ()  

diffThread1 = thread1Primary - thread1Standby
diffThread2 = thread2Primary - thread2Standby

#msg = u'''
#            DATAGUARD SYNC ERROR
#              thread1Primary = %s 
#              thread1Standby = %s
#              thread2Primary = %s
#              thread2Standby = %s
#''' % (str(thread1Primary),str(thread1Standby),str(thread2Primary),str(thread2Standby))
#
#
#print msg
if diffThread1 != 0 or diffThread2 !=0:
    msg = u' DATAGUARD ERROR : thread1Primary = %s thread1Standby = %s thread2Primary = %s thread2Standby = %s ' % (str(thread1Primary),str(thread1Standby),str(thread2Primary),str(thread2Standby))
    sys.exit(2)
else:
    msg = u' DATAGUARD OK : thread1Primary = %s thread1Standby = %s thread2Primary = %s thread2Standby = %s ' % (str(thread1Primary),str(thread1Standby),str(thread2Primary),str(thread2Standby))
    print msg
    

#    send_email( msg, to_list, 'DATAGUARD SYNC ERROR')

 

posted on 2015-12-18 15:29  zhaobin022  阅读(183)  评论(0编辑  收藏  举报