Как получить второе значение многозначного атрибута ldap

Как получить второе значение многозначного атрибута ldap

У нас есть имя атрибута ldap «mail», которое имеет несколько значений, например

почта:[email protected]

почта:[email protected]

Теперь я ищу запрос, который вернет в результате только второе значение mail:[email protected]

ldapsearch -h xxx.xxx.xxx.xxx -xw $PASS -LLL -D "cn=admin,dc=example,dc=com" -b 
"ou=workers,dc=example,dc=com" "(&(mail=*demosite.com))"

но запрос выше возвращает оба идентификатора электронной почты. Мне нужен только второй. Пожалуйста, предоставьте свои данные.

решение1

Вы не можете сделать это в поиске LDAP, вам понадобится дополнительная обработка вокруг этого. Во-первых, почти наверняка нет гарантии порядка атрибутов и значений, возвращаемых поиском.

решение2

Некоторые серверы LDAP, например OpenLDAP, поддерживаютзначенияReturnFilterконтроль (см.Запрос на изменение 3876).

Вы можете использовать этот элемент управления с OpenLDAPldapsearchс аргументом CLI -E.

Пример: -E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))".

Обратите внимание, что фильтр представляет собой так называемый простой фильтр.безоперанд.

Пример с моей онлайн-демонстрациейÆ-DIR:

Без контроля:

$ ldapsearch -H "ldaps://demo.ae-dir.com" -b "ou=ae-dir" -s sub -x -D "uid=aead,cn=ae,ou=ae-dir" -w CorrectHorseBatteryStaple -LL "(memberOf=cn=test-users-2,cn=test,ou=ae-dir)" memberOf
version: 1

dn: uid=dsrg,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir
memberOf: cn=test-users-3,cn=test,ou=ae-dir

dn: uid=rqei,cn=test,ou=ae-dir
memberOf: cn=test-users-1,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir

С контролем сопоставленных значений:

$ ldapsearch -H "ldaps://demo.ae-dir.com" -b "ou=ae-dir" -s sub -x -D "uid=aead,cn=ae,ou=ae-dir" -w CorrectHorseBatteryStaple -LL -E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))" "(memberOf=cn=test-users-2,cn=test,ou=ae-dir)" memberOf
version: 1

dn: uid=dsrg,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir

dn: uid=rqei,cn=test,ou=ae-dir
memberOf: cn=test-users-2,cn=test,ou=ae-dir

Связанный контент