Вывести всех пользователей, фамилия которых начинается с буквы «К»:
$ ldapsearch -LLL -H ldap://192.168.0.132:389 \
-D testldap@test.alt -b "dc=test,dc=alt" \
-x -W "(&(sAMAccountName=*)(sn=К*))" cn sn
где:
-H ldap://192.168.0.132:389 — сервер LDAP;
-D testldap@test.alt — пользователь с правом чтения в каталоге LDAP;
-b "dc=test,dc=alt" — контейнер AD, в котором будет выполняться поиск;
-x — использовать простую аутентификацию;
-W — спросить пароль;
"(&(sAMAccountName=*)(sn=К*))" — выражение, по которому будут отфильтрованы результаты;
cn sn — поля, которые необходимо вывести.
Параметры по умолчанию можно задать в файле
/etc/openldap/ldap.conf, например:
BASE dc=test,dc=alt
URI ldap://dc1.test.alt
Команда с использованием базы поиска и URI по умолчанию:
$ ldapsearch -LLL -D testldap@test.alt \
-x -W "(&(sAMAccountName=*)(sn=К*))" cn sn
Вывести фамилию и электронную почту всех пользователей, из подразделения OU, у которых непустое поле mail:
$ ldapsearch -LLL -H ldap://192.168.0.132:389 \
-D testldap@test.alt -b "ou=OU,dc=test,dc=alt" -s one \
-x -W "(&(sAMAccountName=*)(mail=К*))" sn mail
В данном примере не будут выведены записи только из подразделения OU, но не из его дочерних подразделений.
Считать последовательность строк из файла
new.filter и выполнить функцию поиска LDAP для каждой строки:
$ ldapsearch -H ldap://192.168.0.132:389 \ -D testldap@test.alt -b "dc=test,dc=alt" -x -W -f new.filter "(samaccountname=%s)" cn
Содержимое файла
new.filter:
z*
ivanov
k*
*k
Команда выполняет поиск по поддереву для каждого фильтра, начиная с samaccountname=z*. Когда этот поиск завершается, начинается поиск для фильтра cn=ivanov и т.д. Пример вывода вышеуказанной команды с параметром
-n:
LDAPv3
# base <dc=test,dc=alt> with scope subtree
# filter pattern: (samaccountname=%s)
# requesting: dn
#
#
# filter: (samaccountname=z*)
#
#
# filter: (samaccountname=ivanov)
#
#
# filter: (samaccountname=k*)
#
#
# filter: (samaccountname=*k)
#