다중 값 LDAP 속성의 두 번째 값을 얻는 방법

다중 값 LDAP 속성의 두 번째 값을 얻는 방법

우리는 다음과 같은 여러 값을 갖는 ldap 속성 이름 "mail"을 가지고 있습니다.

우편:[이메일 보호됨]

우편:[이메일 보호됨]

이제 두 번째 값 메일만 결과로 반환하는 쿼리를 찾고 있습니다.[이메일 보호됨]

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))"

하지만 위의 쿼리는 두 이메일 ID를 모두 반환합니다. 나는 두 번째만을 원합니다. 귀하의 의견을 제공해 주십시오.

답변1

LDAP 검색에서는 이 작업을 수행할 수 없으며 이에 대한 추가 처리가 필요합니다. 우선, 검색에서 반환되는 속성과 값의 순서가 보장되지 않는다는 점은 거의 확실합니다.

답변2

OpenLDAP와 같은 일부 LDAP 서버는 다음을 지원합니다.값반환 필터제어(참조RFC 3876).

OpenLDAP와 함께 이 컨트롤을 사용할 수 있습니다.LDAP검색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

관련 정보