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