#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 <HOST> <SEVERITY> <DATA>"
                sys.exit()
        try:
                severity = sys.argv[2]
        except:
                print  "usage: services.py <HOST> <SEVERITY> <DATA>"
                sys.exit()
        try:
                mondata_res = sys.argv[3]
        except:
                print  "usage: services.py <HOST> <SEVERITY> <DATA>"
                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)