В ldapmodify
На странице руководства указано, что:
По умолчанию ldapmodify изменяет существующие записи
Но когда я пытаюсь импортировать файл LDIF с ldapmodify
Я получаю следующую ошибку:
ldapmodify: modify operation type is missing at line X
Q1: Почему, какие аргументы я должен добавить к моей команде ldapmodify?
Если я импортирую файл LDIF с помощью ldapadd
и запись уже существует, я получаю следующую ошибку:
ldap_add: Already exists (68)
Это можно игнорировать, используя -c
переключатель (для продолжения), однако ldap_add не будет обновлять существующие записи. Вместо этого, чтобы обновить существующие записи, следует использовать ldapmodify
, тем не мение ldapmodify
не будет добавлять недостающие записи.
Q2: Есть ли способ импортировать файлы LDIF, создавая недостающие записи и одновременно обновляя существующие?
Ldif для ldapmodify имеет другой синтаксис, чем обычный ldif. Например: если вы хотите добавить запись 'foo' со значением 'bar', вы должны написать свой ldif следующим образом:
dn: cn=ToModify,dc=example,dc=com
changetype: Modify
add: foo
foo: bar
replace: mail
mail: new@email.com
delete: unneededEntry
Этот ldif добавит атрибут foo со значением bar, обновит атрибут mail до new@email.com и удалит ненужныйEntry. затем вызовите команду ldapmodify.
ldapmodify -f update.ldif
(при необходимости с другими параметрами, например, с простой аутентификацией)
Попробуйте переключатель -a
Add or modify options:
-a add values (default is to replace)
Ответ Гоэза кажется прекрасным.
Однако, если вы не знакомы с ldif, имеет смысл использовать
ldapvi
вместо. Вы можете редактировать уже существующие записи или добавлять новые.
apt-get install ldapvi