Code

Initial commit
[nagixsc.git] / dummy_read_xml.py
1 #!/usr/bin/python
3 #import base64
4 import datetime
5 import libxml2
6 import optparse
7 import sys
9 parser = optparse.OptionParser()
11 parser.add_option('-u', '', dest='url', help='URL of status file (xml)')
12 parser.add_option('-f', '', dest='file', help='(Path and) file name of status file')
13 parser.add_option('-s', '', dest='seconds', type='int', help='Maximum age in seconds of xml timestamp')
14 parser.add_option('-m', '', action='store_true', dest='markold', help='Mark (Set state) of too old checks as UNKNOWN')
15 parser.add_option('-v', '', action='count', dest='verb', help='Verbose output')
17 parser.set_defaults(url=None)
18 parser.set_defaults(file='nagixsc.xml')
19 parser.set_defaults(seconds=14400)
20 parser.set_defaults(markold=False)
21 parser.set_defaults(verb=0)
23 (options, args) = parser.parse_args()
25 ##############################################################################
27 from nagixsc import *
29 ##############################################################################
31 now = int(datetime.datetime.now().strftime('%s'))
33 # Get URL or file
34 if options.url != None:
35         import urllib2
37         response = urllib2.urlopen(options.url)
38         doc = libxml2.parseDoc(response.read())
39         response.close()
40 else:
41         doc = libxml2.parseFile(options.file)
44 # Check XML file basics
45 (status, string) = xml_check_version(doc)
46 debug(1, options.verb, string)
47 if not status:
48         print string
49         sys.exit(127)
52 # Get timestamp and check it
53 filetimestamp = xml_get_timestamp(doc)
54 if not filetimestamp:
55         print 'No timestamp found in XML file, exiting because of invalid XML data...'
56         sys.exit(127)
58 timedelta = int(now) - int(filetimestamp)
59 debug(1, options.verb, 'Age of XML file: %s seconds, max allowed: %s seconds' % (timedelta, options.seconds))
62 # Put XML to Python dict
63 checks = xml_to_dict(doc)
66 # Loop over check results and output them
67 for check in checks:
68         check = check_mark_outdated(check, now, options.seconds, options.markold)
69         print 'Host:      %s\nService:   %s\nRetCode:   %s\nOutput:    %r\nTimestamp: %s\n' % (check['host_name'], check['service_description'], check['returncode'], check['output'], check['timestamp'])
71 import pprint
72 pprint.pprint(checks)