[Spacewalk-list] Query current OSA clients
Justin Edmands
j.edmands at sagedining.com
Tue Jan 20 20:16:34 UTC 2015
Awesome! this works much much faster.
From: "Matthew Madey" <mattmadey at gmail.com>
To: spacewalk-list at redhat.com
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 < j.edmands at sagedining.com > 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 at 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
Spacewalk-list at redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-list
_______________________________________________
Spacewalk-list mailing list
Spacewalk-list at redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/spacewalk-list/attachments/20150120/f30a5f0e/attachment.htm>
More information about the Spacewalk-list
mailing list