Hi Martin: Thank you once again for your excellent insights. I really appreciate your help. FreeIPA is really impressive.
Regards, Joe -----Original Message----- From: Martin Kosek [mailto:mko...@redhat.com] Sent: Thursday, June 28, 2012 1:46 AM To: Joe Linoff Cc: email@example.com Subject: Re: [Freeipa-users] How can I change my password from a python script? On 06/28/2012 03:34 AM, Joe Linoff wrote: > Hi Everybody: > > > > I need to add a lot of users to an LDAP system for testing and I would > like to do it in batch mode. For my small tests have been doing something like this: > > > > #!/bin/bash > > # Script to create a new user. > > ipa user-add bigbob \ > > --email=b...@bigbobsemporium.com <mailto:b...@bigbobsemporium.com> > \ > > --first=Bob \ > > --last=Bigg \ > > --password \ > > --setattr=description='The sales guy.' <<-EOF > > b1gB0bsTmpPwd > > b1gB0bsTmpPwd > > EOF > > > > However, I am python guy and would like to use it instead. I am sure > that I can do a similar thing using pexpect in python. Probably something like this: > > > > # This code has not been tested. It is only for a thought experiment. > > # Add a user and enter the password using pexpect. > > cmd = "ipa user-add bigbob --email='bbob@BigBobsEmporium." > > cmd += " --first=Bob --last=Bigg --password " > > cmd += "--setattr=description='The sales guy.'" > > rets = ['Password', 'Enter Password again to verify', pexpect.EOF, > pexpect.TIMEOUT] > > c = pexpect.spawn(cmd,timeout=None) > > i = c.expect(rets) > > if i == 0: # Password > > child.sendline('b1gB0bsTmpPwd') > > i = c.expect(rets) > > if i == 1: # Enter Password again to verify > > child.sendline('b1gB0bsTmpPwd') > > i = c.expect(rets) > > if i == 2: > > print 'SUCCESS' > > else: > > sys.exit('ERROR: something bad happened #1') > > else: > > sys.exit('ERROR: something bad happened #2') > > else: > > sys.exit('ERROR: something bad happened #3') > > > > But I was wondering whether there was a better using the IPA API. Is > there a way for me to do that? > > > > Any help or insights would be greatly appreciated. > > > Thanks, > > > > Joe > Hello Joe, if you don't want to use batch command as Petr suggested you can try the following example. It also uses --random option available in recent FreeIPA version to let FreeIPA handle the password generation: # cat add-users.py #!/usr/bin/env python from ipalib import api api.bootstrap_with_global_options(context='cli') api.finalize() api.Backend.xmlclient.connect() for i in xrange(5): login = u'user%d' % i result = api.Command['user_add'](login, givenname=u'Test', \ sn=u'User #%d' % i, random=True) password = result['result']['randompassword'] print "Created user '%s' with password '%s'" % (login, password) When I execute it: # ./add-users.py Created user 'user0' with password 'EvzY+Of5pk@+' Created user 'user1' with password 'kyRHb9RMFzBO' Created user 'user2' with password 'u2mt_oGU_UIX' Created user 'user3' with password 'Lm6ONeErNFgz' Created user 'user4' with password 'AS=EeFozvbE-' HTH, Martin _______________________________________________ Freeipa-users mailing list Freeipafirstname.lastname@example.org https://www.redhat.com/mailman/listinfo/freeipa-users