So erhalten Sie den zweiten Wert eines LDAP-Attributs mit mehreren Werten

So erhalten Sie den zweiten Wert eines LDAP-Attributs mit mehreren Werten

Wir haben den LDAP-Attributnamen "mail", der mehrere Werte haben kann, wie

Mail:[email geschützt]

Mail:[email geschützt]

Jetzt suche ich nach der Abfrage, die als Ergebnis nur den zweiten Wert „Mail“ zurückgibt:[email geschützt]

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

aber die obige Abfrage gibt beide E-Mail-IDs zurück. Ich möchte nur die zweite. Bitte geben Sie Ihre Eingaben ein.

Antwort1

Dies ist bei einer LDAP-Suche nicht möglich, Sie benötigen zusätzliche Verarbeitungsschritte. Zum einen gibt es mit ziemlicher Sicherheit keine Garantie für die Reihenfolge der von einer Suche zurückgegebenen Attribute und Werte.

Antwort2

Einige LDAP-Server, z. B. OpenLDAP, unterstützen dieWerteReturnFilterKontrolle (sieheRFC 3876).

Sie können dieses Steuerelement mit OpenLDAPs verwendenLDAP-Suchemit CLI-Argument -E.

Beispiel: -E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))".

Beachten Sie, dass es sich bei dem Filter um einen sogenannten einfachen Filter handelt.ohneOperand.

Beispiel mit meiner Online-Demo vonÆ-DIR:

Ohne die Kontrolle:

$ 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

Mit der Kontrolle übereinstimmender Werte:

$ 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

verwandte Informationen