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