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