#!/usr/bin/python import pynag.Plugins import cx_Oracle helper = pynag.Plugins.PluginHelper() helper.parser.add_option('--username', help="Username to the database", dest="username") helper.parser.add_option('--password', help="Log in with this password", dest="password") helper.parser.add_option('--tns', help="TNS name to use", dest="tns") helper.parser.add_option('--query', help="MSSQL Query to execute", dest="query") helper.parser.add_option('--oracle_home', help="Set $ORACLE_HOME to this", dest="oracle_home") # When parse_arguments is called some default options like --threshold and --no-longoutput are automatically added helper.parse_arguments() username = helper.options.username password = helper.options.password tns = helper.options.database query = helper.options.query enable_debugging = helper.options.verbose def debug(message): if enable_debugging: print "debug: %s" % str(message) if not username: helper.parser.error('--username is required') if not password: helper.parser.error('--password is required') if not tns: helper.parser.error('--tns is required') if not oracle_home is None: # Actual coding logic starts conn = cx_Oracle.connect(username, password, database) debug("connecting to host") cur = conn.cursor() debug("Executing sql query: %s" % query) cur.execute(query) status,text = None,None for row in cur: debug(row) if len(row) > 0: status = row[0] if len(row) > 1: text = row[1] else: text = "" if text == '': text = "No text in this field" if status not in pynag.Plugins.state_text: helper.add_summary("Invalid status: %s" % status) status = pynag.Plugins.unknown helper.status(status) helper.add_long_output("%s: %s" % (pynag.Plugins.state_text.get(status,'unknown'), text) ) if not helper.get_summary(): if not text: helper.add_summary("Hey! Af hverju er enginn texti?") else: helper.add_summary(text) helper.check_all_metrics() helper.exit()