diff options
Diffstat (limited to 'ipa-admintools/ipa-findgroup')
-rw-r--r-- | ipa-admintools/ipa-findgroup | 180 |
1 files changed, 92 insertions, 88 deletions
diff --git a/ipa-admintools/ipa-findgroup b/ipa-admintools/ipa-findgroup index 08d623141..e6f27e9a6 100644 --- a/ipa-admintools/ipa-findgroup +++ b/ipa-admintools/ipa-findgroup @@ -18,17 +18,6 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -import sys -from optparse import OptionParser -import ipa.ipaclient as ipaclient -import ipa.ipaadminutil as ipaadminutil -import ipa.config - -import errno -import sys -import xmlrpclib -import kerberos - def usage(): print "ipa-findgroup [-a|--all] [-n|--notranslate] group" sys.exit() @@ -56,87 +45,102 @@ def main(): if options.usage or len(args) != 2: usage() - try: - client = ipaclient.IPAClient() - if options.all is None: - groups = client.find_groups(args[1], ['cn','description','gidnumber','nsAccountLock']) + client = ipaclient.IPAClient() + if options.all is None: + groups = client.find_groups(args[1], ['cn','description','gidnumber','nsAccountLock']) + else: + groups = client.find_groups(args[1], sattrs=['*','nsAccountLock']) + + counter = groups[0] + groups = groups[1:] + groupindex = -1 + if counter == 0: + print "No entries found for", args[1] + return 2 + elif counter == -1: + print "These results are truncated." + print "Please refine your search and try again." + + if counter > 1: + try: + groupindex = ipaadminutil.select_group(counter, groups) + except KeyboardInterrupt: + return 1 + if groupindex == "q": + return 0 + + if groupindex >= 0: + groups = [groups[groupindex]] + + for ent in groups: + try: + members = client.group_members(ent.dn, ['dn','cn']) + except ipa.ipaerror.IPAError, e: + print "Error getting members for " + ent.dn + print str(e) + continue + attr = ent.attrList() + if options.notranslate: + labels = {} + for a in attr: + labels[a] = a else: - groups = client.find_groups(args[1], sattrs=['*','nsAccountLock']) - - counter = groups[0] - groups = groups[1:] - groupindex = -1 - if counter == 0: - print "No entries found for", args[1] - return 2 - elif counter == -1: - print "These results are truncated." - print "Please refine your search and try again." - - if counter > 1: - try: - groupindex = ipaadminutil.select_group(counter, groups) - except KeyboardInterrupt: - return 1 - if groupindex == "q": - return 0 - - if groupindex >= 0: - groups = [groups[groupindex]] - - for ent in groups: - try: - members = client.group_members(ent.dn, ['dn','cn']) - except ipa.ipaerror.IPAError, e: - print "Error getting members for " + ent.dn - print str(e) - continue - attr = ent.attrList() - if options.notranslate: - labels = {} - for a in attr: - labels[a] = a + labels = client.attrs_to_labels(attr) + + print "dn: " + ent.dn + + for a in attr: + value = ent.getValues(a) + if isinstance(value,str): + print labels[a] + ": " + value else: - labels = client.attrs_to_labels(attr) + print labels[a] + ": " + for l in value: + print "\t" + l - print "dn: " + ent.dn + counter = members[0] + members = members[1:] - for a in attr: - value = ent.getValues(a) - if isinstance(value,str): - print labels[a] + ": " + value - else: - print labels[a] + ": " - for l in value: - print "\t" + l - - counter = members[0] - members = members[1:] - - if counter > 0: - print "Members:" - for m in members: - print " " + m.getValue('cn') + ": " + m.dn - # blank line between results - print - - except xmlrpclib.Fault, fault: - if fault.faultCode == errno.ECONNREFUSED: - print "The IPA XML-RPC service is not responding." - else: - print fault.faultString - return 1 - except kerberos.GSSError, e: - print "Could not initialize GSSAPI: %s/%s" % (e[0][0][0], e[0][1][0]) - return 1 - except xmlrpclib.ProtocolError, e: - print "Unable to connect to IPA server: %s" % (e.errmsg) - return 1 - except ipa.ipaerror.IPAError, e: - print "%s" % (e.message) - return 1 + if counter > 0: + print "Members:" + for m in members: + print " " + m.getValue('cn') + ": " + m.dn + # blank line between results + print return 0 -if __name__ == "__main__": - sys.exit(main()) +try: + import sys + from optparse import OptionParser + import ipa.ipaclient as ipaclient + import ipa.ipaadminutil as ipaadminutil + import ipa.ipautil as ipautil + import ipa.config + + import errno + import sys + import xmlrpclib + import kerberos + + if __name__ == "__main__": + sys.exit(main()) +except SystemExit, e: + sys.exit(e) +except KeyboardInterrupt, e: + sys.exit(1) +except xmlrpclib.Fault, fault: + if fault.faultCode == errno.ECONNREFUSED: + print "The IPA XML-RPC service is not responding." + else: + print fault.faultString + sys.exit(1) +except kerberos.GSSError, e: + print "Could not initialize GSSAPI: %s/%s" % (ipautil.get_gsserror(e)) + sys.exit(1) +except xmlrpclib.ProtocolError, e: + print "Unable to connect to IPA server: %s" % (e.errmsg) + sys.exit(1) +except ipa.ipaerror.IPAError, e: + print "%s" % (e.message) + sys.exit(1) |