#Listing 1 snmptraphandling.py #!/usr/bin/python -u """ Written by Francois Meehan (Cedval Info) First release 2004/09/15 This script receives input from sec.pl concerning translated snmptraps *** Important note: sec must send DATA within quotes Ex: ./services.py $1 $2 $3 """ import commands, string, os, sys, time global return_code def check_arg(): try: host = sys.argv[1] except: print "usage: services.py " sys.exit() try: severity = sys.argv[2] except: print "usage: services.py " sys.exit() try: mondata_res = sys.argv[3] except: print "usage: services.py " sys.exit() return (host, severity, mondata_res) def post_results(host, mondata_res, return_code, service_suffix): mytime = time.time() mytime = str(mytime) mytime = mytime[:-3] mondata_res = '" ' + mondata_res + '" ' #print mondata_res #output = open('/var/nagios/rw/nagios.cmd', 'w') output = open('/usr/local/nagios/var/rw/nagios.cmd', 'w') print return_code results = "[" + mytime + "] " + "PROCESS_SERVICE_CHECK_RESULT;" \ + host + ";" + "snmp_trap_handling_" + service_suffix + ";" \ + return_code + ";" + mondata_res + "\n" output.write(results) def get_return_code(): if severity == "INFORMATIONAL": return_code = "0" service_suffix = "ok" elif severity == "Normal": return_code = "0" service_suffix = "ok" elif severity == "SEVERE": return_code = "2" service_suffix = "critical" elif severity == "MAJOR": return_code = "2" service_suffix = "critical" elif severity == "CRITICAL": return_code = "2" service_suffix = "critical" elif severity == "WARNING": return_code = "1" service_suffix = "warning" elif severity == "MINOR": return_code = "1" service_suffix = "warning" return return_code, service_suffix #Validating parameters # Main routine... if __name__ == '__main__': (host, severity, mondata_res) = check_arg() return_code, service_suffix = get_return_code() post_results(host, mondata_res, return_code, service_suffix)