Add option -a to print all attributes

Make sure we don't print out binary data
Remvoe any trailing white space when printing to avoid extra newlines
This commit is contained in:
Rob Crittenden 2007-10-11 10:00:01 -04:00
parent 0a935d5be3
commit a4143789da

View File

@ -22,23 +22,51 @@ import sys
from optparse import OptionParser from optparse import OptionParser
import ipa.ipaclient as ipaclient import ipa.ipaclient as ipaclient
import ipa.config import ipa.config
import ipa.ipautil as ipautil
import base64
import sys import sys
import xmlrpclib import xmlrpclib
import kerberos import kerberos
def usage(): def usage():
print "ipa-finduser <uid>" print "ipa-finduser user"
sys.exit() sys.exit()
def parse_options(): def parse_options():
parser = OptionParser() parser = OptionParser()
parser.add_option("-a", "--all", action="store_true", dest="all",
help="Set user's e-mail address")
parser.add_option("--usage", action="store_true",
help="Program usage")
args = ipa.config.init_config(sys.argv) args = ipa.config.init_config(sys.argv)
options, args = parser.parse_args(args) options, args = parser.parse_args(args)
return options, args return options, args
def wrap_binary_data(data):
"""Converts all binary data strings into base64-encoded objects for display
"""
if isinstance(data, str):
if ipautil.needs_base64(data):
return base64.encodestring(data)
else:
return data
elif isinstance(data, list) or isinstance(data,tuple):
retval = []
for value in data:
retval.append(wrap_binary_data(value))
return retval
elif isinstance(data, dict):
retval = {}
for (k,v) in data.iteritems():
retval[k] = wrap_binary_data(v)
return retval
else:
return data
def main(): def main():
user={} user={}
options, args = parse_options() options, args = parse_options()
@ -48,7 +76,10 @@ def main():
try: try:
client = ipaclient.IPAClient() client = ipaclient.IPAClient()
users = client.find_users(args[1], sattrs=['dn','uid','cn','homeDirectory']) if options.all is None:
users = client.find_users(args[1], sattrs=['uid','cn','homeDirectory','loginshell'])
else:
users = client.find_users(args[1], sattrs=None)
counter = users[0] counter = users[0]
users = users[1:] users = users[1:]
@ -58,17 +89,19 @@ def main():
for ent in users: for ent in users:
attr = ent.attrList() attr = ent.attrList()
attr.sort()
print "dn: " + ent.dn if options.all is True:
print "dn: " + ent.dn
for a in attr: for a in attr:
value = ent.getValues(a) value = ent.getValues(a)
if isinstance(value,str): if isinstance(value,str):
print a + ": " + value print a + ": " + str(wrap_binary_data(value)).rstrip()
else: else:
print a + ": " print a + ": "
for l in value: for l in value:
print "\t" + l print "\t" + wrap_binary_data(l)
# blank line between results # blank line between results
print print