Awesome! this works much much faster.
From: "Matthew Madey" <[email protected]> To: [email protected] Sent: Tuesday, January 20, 2015 1:31:46 PM Subject: Re: [Spacewalk-list] Query current OSA clients Here is a python script I wrote for reporting. It will return the hostname and OSA status for every registered client, and is much faster than using spacecmd. You could wrap it in a shell script to return only the systems you're looking for, or if you're familiar with python just adjust the code to filter the ones that are "online". You will need to setup a configuration file containing the username and password to use when querying (If you are using Spacewalk 2.2, I'd recommend making this a read-only API user for the sake of security) Hope this helps. Create file: /etc/rhn/rhn-api-user.conf File contents: [Spacewalk] spw_server = yourserver.example.com spw_user = username spw_pass = password Here is the python script: #!/usr/bin/python import xmlrpclib import subprocess import os import sys import ConfigParser cfg_file="/etc/rhn/rhn-api-user.conf" config = ConfigParser.ConfigParser() try: config.read (cfg_file) except: print "Could not read config file %s." % cfg_file sys.exit(1) try: spw_server = config.get ('Spacewalk', 'spw_server') spw_user = config.get ('Spacewalk', 'spw_user') spw_pass = config.get ('Spacewalk', 'spw_pass') except: print "The file %s seems not to be a valid config file." % options.cfg_file sys.exit(1) SATELLITE_URL = "http://{0}/rpc/api".format(spw_server) SATELLITE_LOGIN = spw_user SATELLITE_PASSWORD = spw_pass client = xmlrpclib.Server(SATELLITE_URL, verbose=0) key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD) print "hostname,status" systems = client.system.listSystems(key) for system in systems: hostname = system['name'] id = system['id'] details = client.system.getDetails(key, id) status = details['osa_status'] print "%s,%s" % (hostname, status) client.auth.logout(key) On Tue, Jan 20, 2015 at 11:02 AM, Justin Edmands < [email protected] > wrote: Hey Spacewalkers, I am attempting to query all of the systems that are currently checking in via OSAD. I have been using a fairly inefficient spacecmd command to make this work for now. [12:00:13][justin@justindev1:~]# spacecmd system_details S0* | grep -e "Name" -e "OSA" >> OSA_status.out ; grep online OSA_status.out | wc -l the S0 just happens to be the first two characters in the names I want to query. In the end it does a word count to determine how many are "online" Any better way to do this? This takes about 2-5 minutes when run against a list of about 500 clients. _______________________________________________ Spacewalk-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/spacewalk-list _______________________________________________ Spacewalk-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/spacewalk-list
_______________________________________________ Spacewalk-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/spacewalk-list
