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
435
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/usr/bin/env python
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
import pvl.args
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
import pvl.hosts
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
import pvl.snmp.traps
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
import pvl.syslog.args
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
import collections
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
import logging; log = logging.getLogger('pvl.switches-traps')
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
import optparse
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
def main (argv) :
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    """
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
        Process SNMP traps from snmptrapd.
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    """
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
    parser = optparse.OptionParser(main.__doc__)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
    parser.add_option_group(pvl.args.parser(parser))
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    parser.add_option_group(pvl.hosts.optparser(parser))
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
    parser.add_option_group(pvl.syslog.args.parser(parser))
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    # input
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
    options, args = parser.parse_args(argv[1:])
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    25
    pvl.args.apply(options)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
    
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    # syslog source
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
    syslog = pvl.syslog.args.apply(options)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    29
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
    # XXX: associate with host data
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
    #hosts = pvl.hosts.apply(options, args)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
    # main
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
    for item in syslog:
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
        host, values = pvl.snmp.traps.parse_snmptrapd_log(item['msg'])
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
        print '{}'.format(host)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
        for field, value in values.iteritems():
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
            print '\t{:55} {}'.format(field, value)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
        print
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
    
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
    return 0
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
if __name__ == '__main__':
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
    pvl.args.main(main)
d10e9db3fb24 snmp trap handling using snmptrapd, and parsing using pvl.snmp.traps
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48