Назад | Перейти на главную страницу

ldapadd / ldapmodify: необходимые пояснения по этим командам

В 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