| author | Tero Marttila <terom@paivola.fi> |
| Sat, 03 Jan 2015 20:18:23 +0200 | |
| changeset 435 | d10e9db3fb24 |
| permissions | -rwxr-xr-x |
|
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 |
|
|
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 |