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 michael@stroeder.com:
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.