Praise teh sed
Posted on Sunday, 5th August, 2007 in Gentoo, Life
Since my talk with Robin on Thursday regarding the autogenerated userinfo.xml, I finally found some time today to get all the info’s I need out of userinfo.xml.
Since I don’t really want to manually enter all those mail addresses from userinfo into LDAP manually, I figured sed might be my best friend. *BUT* sed ain’t easy .. But thanks to Fabian and Gilles, I learned something new about sed today ..
Basically I searched for a way to transform userinfo.xml into a datafile for ldapedit.
As most of you know, userinfo.xml would look like this:
<user username="phreak"> <realname fullname="Christian Heim"> <firstname>Christian</firstname> <familyname>Heim</familyname> </realname> <pgpkey>0x9A9F68E6</pgpkey> <email role="gentoo">phreak@gentoo.org</email> <joined>06 August 2005</joined> <birthday></birthday> <roles>vserver, openvz, kernel</roles> <location longitude="13.032" latitude="54.251">Germany, Stralsund</location> </user>
So the first step would be to simply use egrep on userinfo.xml to filter only the things I needed ..
celsius roll-call [0] $ egrep "(username=|<email |</user>)" \ userinfo.xml
That looks more like a processable list to me. Now I only needed to convert the
This is what I applied on top of the above filter:
celsius roll-call [0] $ egrep "(username=|<email |</user>)" \ userinfo.xml | \ sed -e "s,.*<user username=\",dn: uid=," \ -e "s,\">$,\,ou=devs\,dc=gentoo\,dc=org\nadd: mail," \ -e 's,.*<email role="\\(gentoo\\|primary\\)">,mail: ,' \ -e "s,</email>,," -e "s, </user>,,"
And that’s it, I just need to check the dn’s for all the users, and when I’m done with that, finito!