bin/pvl.switches-traps
author Tero Marttila <terom@paivola.fi>
Sat, 03 Jan 2015 20:18:23 +0200
changeset 435 d10e9db3fb24
permissions -rwxr-xr-x
snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
#!/usr/bin/env python

import pvl.args
import pvl.hosts
import pvl.snmp.traps
import pvl.syslog.args

import collections
import logging; log = logging.getLogger('pvl.switches-traps')
import optparse


def main (argv) :
    """
        Process SNMP traps from snmptrapd.
    """

    parser = optparse.OptionParser(main.__doc__)
    parser.add_option_group(pvl.args.parser(parser))
    parser.add_option_group(pvl.hosts.optparser(parser))
    parser.add_option_group(pvl.syslog.args.parser(parser))

    # input
    options, args = parser.parse_args(argv[1:])
    pvl.args.apply(options)
    
    # syslog source
    syslog = pvl.syslog.args.apply(options)

    # XXX: associate with host data
    #hosts = pvl.hosts.apply(options, args)

    # main
    for item in syslog:
        host, values = pvl.snmp.traps.parse_snmptrapd_log(item['msg'])

        print '{}'.format(host)

        for field, value in values.iteritems():
            print '\t{:55} {}'.format(field, value)

        print
    
    return 0

if __name__ == '__main__':
    pvl.args.main(main)