[Freeipa-users] KISS: DHCP from IPA
Rob Crittenden
rcritten at redhat.com
Wed Aug 29 19:52:46 UTC 2012
Chris Evich wrote:
> On 08/29/2012 11:57 AM, John Dennis wrote:
>> Thanks for the contribution Chris!
>>
>> Just as an aside if you know Python you can call the IPA commands
>> directly and use Python to extract and reformat the data, it might be a
>> lot simpler than doing the bash/awk dance.
>>
>
> I agree that using bash/sed/awk is a bit clunky. I actually did stumble
> on the python stuff by accident, but wasn't able to find much reference
> / examples for how to use it. At the time I just needed something quick
> to toss-together. Maybe the python docs/examples are different today,
> any links handy?
>
I seem to recall this came up on either freeipa-users or freeipa-devel
but I can't find the thread. Some decent examples got posted.
Here is something I've been twiddling with to add users from a
well-formatted passwd file:
import sys
import re
from ipalib import api
from ipalib import errors
filename='passwd'
name_pattern = re.compile('(\w+) \w (\w+)')
api.bootstrap(context='cli')
api.finalize()
api.Backend.xmlclient.connect()
count = 0
fd = open(filename, 'r')
while True:
line = fd.readline()
if not line:
break
line = unicode(line.strip())
try:
(login, passwd, uid, gid, gecos, dir, shell) = line.split(':')
except ValueError, e:
print "mal-formed passwd entry: %s (%s)" % (e, line)
continue
m = name_pattern.match(gecos)
if m:
first = m.group(1)
last = m.group(2)
else:
first = u'USER'
last = u'NAME'
try:
api.Command['user_add'](login, gidnumber=int(gid),
uidnumber=int(uid),
gecos=gecos.strip(), homedir=dir, shell=shell,
givenname=first, sn=last)
except errors.DuplicateEntry:
print "%s already exists" % login
continue
...
rob
More information about the Freeipa-users
mailing list