#!/usr/bin/python import lxml.etree, sys, ConfigParser CP = ConfigParser.ConfigParser() CP.read(['/etc/bcfg2.conf']) try: prefix = CP.get('server', 'repository') except: prefix = "/var/lib/bcfg2" if len(sys.argv) < 2: print "Usage bcfg2-query -d|u|p " print "\t -d\t\t shows the clients that are currently down" print "\t -u\t\t shows the clients that are currently up" print "\t -p \t shows all the clients of that profile" sys.exit(1) xml = lxml.etree.parse('%s/Metadata/clients.xml'%prefix) if '-p' in sys.argv: profile = sys.argv[sys.argv.index('-p') + 1] clients = xml.xpath(".//Client[@profile='%s']" % (profile)) elif '-d' in sys.argv: clients = xml.xpath(".//Client[@pingable='N']") elif '-u' in sys.argv: clients = xml.xpath(".//Client[@pingable='Y']") elif '-a' in sys.argv: clients = xml.xpath(".//Client") for client in clients: print client.get('name')