AM nagios/plc2nagios.py
[monitor.git] / query.py
1 #!/usr/bin/python
2
3 import csv
4 import sys
5 import os
6 import config
7 from glob import glob
8 import re
9 from cgi import parse_qs
10
11 import vxargs
12 from config import config
13 from optparse import OptionParser
14 from automate import *
15
16 parser = OptionParser()
17 parser.set_defaults(nodelist=None, 
18                                     outdir=None,
19                                         querystr=None,
20                                         simple=False,
21                                         run=False,
22                                         cmdfile=None,)
23
24 parser.add_option("", "--nodelist", dest="nodelist", metavar="filename",
25                                         help="Read list of nodes from specified file")
26 parser.add_option("", "--outdir", dest="outdir", metavar="dirname",
27                                         help="Name of directory to place output")
28 parser.add_option("", "--query", dest="querystr", metavar="QUERY",
29                                         help="a simple query string: key=value")
30 parser.add_option("", "--simple", dest="simple", action="store_true",
31                                         help="display simple output")
32
33 config = config(parser)
34 config.parse_args()
35
36
37 if config.outdir == None: 
38         outdir="checkhosts"
39 else: 
40         outdir=config.outdir
41
42 nodelist = None
43 if config.nodelist is not None:
44         nodelist = config.getListFromFile(config.nodelist)
45
46 if config.querystr == None:
47         queries = parse_qs("IP_SUBNET=127.0.0.1")
48 else:
49         queries = parse_qs(config.querystr)
50         #(key,query) = config.querystr.split("=")
51
52 # Create a file list based on the provide nodelist or a simple pattern for all
53 # files in the given 'outdir' directory
54 filelist = None
55 if nodelist is not None:
56         filelist = []
57         for node in nodelist:
58                 filelist.append("%s/%s.out" % (outdir,node))
59 else:
60         filelist = glob("%s/*.out" % outdir)
61
62 for file in filelist:
63         vals = csv_to_hash(csv.reader(open(file,'r')))
64         hostname = file[len(outdir):-4]
65         m = True
66         for key in queries.keys():
67                 q = re.compile(queries[key][0])
68                 if key in vals and q.match(vals[key]):
69                         m=(m and True)
70                 else:
71                         m=(m and False)
72                         
73         if m:
74                 if config.simple:
75                         print hostname, vals[key]
76                 else:
77                         print hostname, vals