Вывести всех пользователей, фамилия которых начинается с буквы «К»:
$ 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)
#