> How do I modify/delete a single attribute from the directory when I have
> multiple attributes of the same name.
> For example, given the following ldif:
>       dn: cn=config,o=dhcp
>       cn: config
>       objectClass: top
>       objectClass: dhcpService
>       objectClass: dhcpOptions
>       dhcpPrimaryDN: cn=server1,o=dhcp
>       dhcpStatements: default-lease-time 600
>       dhcpStatements: max-lease-time 1200
>       dhcpStatements: ddns-update-style none
>       dhcpStatements: boot-unknown-clients on
>       dhcpStatements: log-facility local7
>
> How would I modify just one of the dhcpStatements: attributes, for
> example, change 'dhcpStatements: log-facility local7' to
> 'dhcpStatements: log-facility local3'?
>
> I've tried an ldif with:
>       dn: cn=config,o=dhcp
>       changetype: modify
>       replace: dhcpStatements log-facility local7
>       dhcpStatements: log-facility local3
> But that just gave me an error:
>       ldapmodify: Undefined attribute type (17)  additional info:
>       dhcpStatements log-facility local7: AttributeDescription
>       contains inappropriate characters.
>
> I've also tried:
>       dn: cn=config,o=dhcp
>       changetype: modify
>       replace: dhcpStatements
>       dhcpStatements: log-facility local3
> But that just gave me an error:
>      replace modify:
>          dhcpStatements
>      replace dhcpStatements:
>          log-facility local3
>      modifying entry "cn=config,o=dhcp"
>      modify complete
>      ldapmodify: Undefined attribute type (17)
>          additional info: modify: attribute type undefined
>
> I can use 'delete: dhcpStatements' but that deletes all of the
> dhcpStatements and then I have to add all of them back with the
> modification to the one that's needed.
>
> So, what ldapmodify/ldif syntax is needed to specify which of multiple
> attributes should be modified?

You need to use LDIF as specified in RFC 2849; note that there is a
specific example that shows what you're trying to accomplish:

# Modify an entry: add an additional value to the postaladdress
# attribute, completely delete the description attribute, replace
# the telephonenumber attribute with two values, and delete a specific
# value from the facsimiletelephonenumber attribute
dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com
changetype: modify
add: postaladdress
postaladdress: 123 Anystreet $ Sunnyvale, CA $ 94086
-
delete: description
-
replace: telephonenumber
telephonenumber: +1 408 555 1234
telephonenumber: +1 408 555 5678
-
delete: facsimiletelephonenumber
facsimiletelephonenumber: +1 408 555 9876
-

In detail, look at the 'facsimiletelephonenumber' portion of the operation.

p.

Reply via email to