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:
A batch command might be useful for this case.
Example (note that I'm not a python guy):
#!/usr/bin/env python
import pprint
from ipalib import api
# Bootstrap
api.bootstrap_with_global_options(context='cli')
api.finalize()
api.Backend.xmlclient.connect()
# Prepare request
users = [
(u'Foo', u'Bar', u'f...@foo.baz', u'psw1', u'Sales guy'),
(u'John', u'Doe', u'j...@foo.baz', u'psw2', u'Tech guy'),
]
add_commands = []
for user in users:
(firstname, surname, email, psw, desc) = user
add_commands.append({
"method": 'user_add',
"params": [
[],
{
"givenname": firstname,
"sn": surname,
"mail": email,
"userpassword": psw,
"setattr": "description='"+desc+"'"
},
],
})
# Execute as batch
result = api.Command['batch'](*add_commands)
# Print
pp = pprint.PrettyPrinter()
pp.pprint(result)
#!/bin/bash
# Script to create a new user.
ipa user-add bigbob \
--email=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
--
Petr Vobornik
_______________________________________________
Freeipa-users mailing list
Freeipa-users@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-users