
Tenemos el nombre del atributo ldap "correo", que tiene múltiples valores como
correo:[correo electrónico protegido]
correo:[correo electrónico protegido]
Ahora estoy buscando la consulta que devolverá el resultado solo del segundo valor del correo:[correo electrónico protegido]
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))"
pero la consulta anterior devuelve ambas identificaciones de correo electrónico. Sólo quiero el segundo. Por favor proporcione sus aportes.
Respuesta1
No puede hacer esto en una búsqueda LDAP; necesitará algún procesamiento adicional. Por un lado, es casi seguro que no hay garantía del orden de los atributos y valores devueltos por una búsqueda.
Respuesta2
Algunos servidores LDAP, por ejemplo OpenLDAP, admiten lavaloresReturnFiltercontrolar (verRFC 3876).
Puede utilizar este control con OpenLDAPldapbúsquedacon el argumento CLI -E.
Ejemplo: -E "mv=((memberOf=cn=test-users-2,cn=test,ou=ae-dir))"
.
Tenga en cuenta que el filtro es el llamado filtro simple.sinoperando.
Ejemplo con mi demostración en línea deÆ-DIR:
Sin el control:
$ 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
Con control de valores coincidentes:
$ 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