hello,

just a little follow-up:

- this is quick and dirty. it assumes cn is monovalued which may not be
true in your DIT
- I assume you just wanted a quick script for a oneshot. if you want a
script that you can regularly run to "fix" your database, you should take
the time to properly write one with perl, python or whatever

I usually use bash+awk for quick & dirty, but I took the time to rewrite
the script in python using the python-ldap library:

LDAP_URL = 'ldap://server'
USER_DN = 'cn=writer,dc=domain,dc=tld'
CREDENTIALS = 'supersecret'
BASE_DN = 'dc=domain,dc=tld'
FILTER = '(&(ou:dn:=people)(!(ou=system))(!(displayName=*)))'

import ldap
l = ldap.initialize(LDAP_URL)
l.bind_s(USER_DN, CREDENTIALS, ldap.AUTH_SIMPLE)
result = l.search_s(BASE_DN, ldap.SCOPE_SUBTREE, FILTER, ['cn'])
for dn, entry in result:
    l.modify_s(dn, (ldap.MOD_REPLACE, 'displayName', entry['cn'][0]))
l.unbind_s()

enjoy, regards,
Jephté

2017-02-01 19:52 GMT+04:00 Jephte Clain <[email protected]>:

> using michaël's filter, you could try this:
>
> ldapsearch [options] '(&(ou:dn:=people)(!(ou=system))(!(displayName=*)))'
> cn | awk '
> /^dn:/ {
>   print
>   print "changetype: modify"
>   print "replace: displayName"
>   next
> }
> /^cn:/ {
>   sub(/^cn/, "displayName")
> }
> { print }
> ' | ldapmodify [options]
>
> we aren't doing your homework, are we? :-)
>
> regards,
> Jephté
>
> 2017-02-01 18:50 GMT+04:00 Michael Ströder <[email protected]>:
>
>> Nick Milas wrote:
>> > Does anyone have a ready-made script (e.g. bash) that would do the
>> following:
>> >
>> >  Loop on all entries in the ou=people branch where ou <> "system" {
>> >    If attribute DisplayName does not exist{
>> >       Set DisplayName to the value of attibute cn
>> >   }
>> >  }
>>
>> You could use this LDAP filter to retrieve all entries you have to modify
>> and their 'cn'
>> attribute:
>>
>> (&(ou:dn:=people)(!(ou=system))(!(displayName=*)))
>>
>> Applying this simple LDIF to all the entries found is left as exercise to
>> the reader:
>>
>> dn: cn=dummy,ou=people,dc=example,dc=com
>> changetype: modify
>> add: displayName
>> displayName: <value taken from 'cn'>
>>
>> Ciao, Michael.
>>
>>
>>
>
>

-- 
Jephté CLAIN | Développeur, Intégrateur d'applications
Service Système d'Information
Direction des Systèmes d'Information
Tél: +262 262 93 86 31 || Gsm: +262 692 29 58 24

Reply via email to