Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- """Checks if specified programs are present
- with correct version on a Windows server
- using wmi protocol
- """
- import argparse
- import socket
- import sys
- import wmi_client_wrapper as wmi
- def main():
- """Gets options from command line
- and checks if specified programs are present
- with correct version.
- """
- options = get_options()
- programs = dict(item.split(":") for item in options.programs.split(";"))
- address = get_host_ip_address(options.computer)
- query = "SELECT Name,Version FROM Win32_Product"
- errors = []
- wmic = wmi.WmiClientWrapper(
- username=r"<USER_NAME>",
- password="<PASSWORD>",
- host=address
- )
- query_result = perform_wmi_query(wmic, query)
- # monitored_programs = []
- for program_name, program_version in programs.iteritems():
- tmp = [x for x in query_result if x['Name'] == program_name]
- if tmp:
- wmi_program = tmp[0]
- if wmi_program['Version'] != program_version:
- errors.append("""Program {0} version is not valid.
- Found {1} expected {2}""".format(program_name,
- wmi_program['Version'],
- program_version))
- else:
- errors.append("Program {0} not found on system.".format(program_name))
- if errors:
- delimiter = '\n'
- error = delimiter.join(errors)
- print "CRITICAL - some programs have incorrect versions or do not exits.\n{0}".format(error)
- sys.exit(2)
- else:
- print "OK - All requires programs are ok."
- sys.exit(0)
- def perform_wmi_query(wmic, query):
- """Preforms wmi query
- Arguments:
- wmic {WmiClientWrapper} -- wmi object uset to connect to server
- query {String} -- query to be run on the server
- Returns:
- [String] -- Output of the query
- """
- try:
- output = wmic.query(query)
- except:
- print "Error connecting to host"
- sys.exit(3)
- return output
- def get_host_ip_address(hostname):
- """Gets ip address from DNS hostname
- Arguments:
- hostname {String} -- DNS hostname
- Returns:
- String -- IP address
- """
- try:
- addres = socket.gethostbyname(hostname)
- except:
- print "Error, hostname not valid."
- sys.exit(3)
- return addres
- def get_options():
- """Parse command line arguments.
- Returns:
- [String] -- Parameters as List
- """
- parser = argparse.ArgumentParser()
- parser.add_argument('--computer', help='Slave name.', required=True)
- parser.add_argument('--programs',
- help='Programs in format <program>:<version> ; sepparated.',
- required=True)
- return parser.parse_args()
- if __name__ == "__main__":
- main()
Add Comment
Please, Sign In to add comment