ldapsearch это интерфейс к библиотечному вызову ldap_search(3), доступный из командной строки.
ldapsearch соединяется с LDAP-сервером, привязывается к нему и выполняет поиск при помощи указанных параметров. Фильтр filter должен соответствовать строковому представлению поисковых фильтров, описанных в RFC 2254. Если фильтр не задан, используется фильтр
(objectClass=*)
Если ldapsearch находит одну или более записей, возвращаются атрибуты, указанные в списке attrs. Если указана
*
, возвращаются все атрибуты пользователя. Если указан
+
,
возвращаются все рабочие (operational) атрибуты. Если attrs отсутствует, возвращаются все пользовательские
атрибуты. Если указан только 1.1, атрибуты не возвращаются.
Опции
-n
Показать что должно быть сделано, но не выполнять поиск на самом деле. Может быть полезно в сочетании с опцией .RS
-v
для отладки.
-u
Включить в вывод User Friendly Name для Distinguished Name (DN).
-v
Запустить в разговорчивом (verbose) режиме; диагностические сообщения должны выводиться на стандартный поток вывода.
-t
Выводить непечатаемые значения во временные файлы. Полезно при работе со значениями, содержащими не символьные данные,
такие как например JPEG-фото или аудио. .TP
-A
Получать только атрибуты (без значений). Полезно в тех случаях, когда просто нужно посмотреть есть значение или нет, а
само по себе значение не интересует. .TP
-L
Результаты поиска показываются в LDAP Data Intechange Format (LDIF) формате. Подробнее о формате в ldif(5). Одно .RS
-L
означает, что вывод должен быть в формате LDIFv1. Второе
-L
отключает комментарии. Третье
-L
отключает вывод версии. По умолчанию используется расширенная версия LDIF.
-M[M]
Включить контроль DSA IT. -MM делает контроль критичным.
-S attribute
Отсортировать результат по заданному атрибуту. По умолчанию результат не сортируется. Если атрибут нулевой длины (""),
записи сортируются по компонентам Distinguished Name. Подробнее в ldap_sort(3). По умолчанию ldapsearch печатает
результаты по мере их получения. При использовании сортировки данные сначала получаются, потом сортируются, потом выводятся.
-d debuglevel
Установить уровень отладки LDAP равным debuglevel. Программа ldapsearch должна быть откомпилирована с опцией
LDAP_DEBUG
, иначе эта опция не будет иметь эффекта.
-f file
Выполнять LDAP-поиск для каждой строки из файла file. Фильтр заданный в командной строке воспринимается как шаблон,
в котором .RS
%s
заменяется строкой из файла. Если вместо имени файла указан символ
-
, строки считываются со стандартного потока ввода.
-x
Использовать простую аутентификацию вместо SASL.
-D binddn
Привязаться к каталогу от имени binddn.
-W
Спросить пароль в командной строке в ходе простой аутентификации.
-w passwd
Использовать passwd как пароль в ходе простой аутентификации.
-y passwdfile
Взять всю необходимую для простой аутентификации информацию из файла passwdfile
-H ldapuri
Указать URI LDAP-сервера; допускаются только поля протокол/хост/порт; в качестве аргумента ожидается список URI,
разделённых пробелами или запятыми. .TP
-h ldaphost
Указать хост, на котором работает LDAP-сервер. Не рекомендуется использовать. Используйте вместо этого .RS
-H
-p ldapport
Указать TCP-порт, на котором работает LDAP-сервер. Не рекомендуется использовать. Используйте вместо этого .RS
-H
-b searchbase
Использовать searchbase в качестве точки начала поиска, вместо стандартной.
-s base|one|sub|children
Определяет область (scope) поиска: base, one, sub и children определяет базовый объект, один
уровень, поддерево или поиск по потомкам. По умолчанию поиск выполняется в поддереве (sub). Замечание: область children
требует чтобы поддерживалась фича LDAPv3 subordinate. .TP
-a never|always|search|find
Указать как разыменовывать алиасы. Должно быть указано одно из значений: never, always, search или
find, что означает, соответственно, что алиасы никогда не разыменовываются, всегда разыменовываются, разыменовываются
при поиске или при поиске базового объекта для поиска. По умолчанию алиасы не разыменовываются вообще. .TP
-P 2|3
Указать, какую версию протокола LDAP использовать.
-l timelimit
Подождать пока поиск завершится в течение заданного времени timelimit. Значение 0 обозначает, что временного
ограничения нет. Значение max обозначает максимальное значение, разрешаемое протоколом. Сервер может накладывать
собственное ограничение, которое может перекрыть только root. .TP
-z sizelimit
ограничить количество записей в результате числом sizelimit. Значение 0 или none обозначает, что ограничений
быть не должно. Значение max обозначает максимальное целое число, разрешённое протоколом. Сервер может накладывать
собственное ограничение, которое может перекрыть только root. .TP
-O security-properties
Задать параметры безопасности SASL.
-I
Включить интерактивный режим SASL. Всегда спрашивать. По умолчанию: спрашивать только при необходимости. .TP
-Q
Включить молчаливый (quiet) режим SASL. Никогда не спрашивать.
-U authcid
Задать аутентификационный ID для SASL. Форма ID зависит от того, какой механизм аутентификации в действительности используется.
-R realm
Задать realm аутентификационного ID для SASL. Форма realm зависит от того, какой механизм аутентификации в действительности
используется. .TP
-X authzid
Задать запрашиваемые авторизационный ID для SASL. authzid может быть в одной из форм: dn:<distinguished name> или u:<username>
-Y mech
Указать какой SASL-механизм использовать для аутентификации. Если не указан, программа выберет лучший механизм из
тех, что знает сервер. .TP
-Z[Z]
Расширенный режим StartTLS (Transport Layer Security). Если задать -ZZ, тогда операция обязательно должна быть успешной.
Формат вывода
Если найдена одна или более записей, они выводятся на стандартный поток вывода
в формате LDAP Data Interchange Format, LDIF (см. ldif(5)):
version: 1
# bjensen, example, net
dn: uid=bjensen,dc=example,dc=net
objectClass: person
objectClass: dcObject
uid: bjensen
cn: Barbara Jensen
sn: Jensen
Если используется опция
-t
, URI временного файла будет использоваться вместо настоящего значения.
Если задан ключ
-A
, выводятся только имена атрибутов (attributename).
Примеры
Такая команда:
ldapsearch -LLL "(sn=smith)" cn sn telephoneNumber
будет выполнять поиск записи smith (
sn=smith
) в поддереве (база поиска и другие параметры берутся из ldap.conf(5)). Будут найдены и выведены на стандартный поток вывода:
имя (common name, .RS
cn
), фамилия (surname,
sn
) и телефонный номер (
telephoneNumber
).
Если найдено две записи, результат будет выглядить похожим на этот:
dn: uid=jts,dc=example,dc=com
cn: John Smith
cn: John T. Smith
sn: Smith
sn;lang-en: Smith
sn;lang-de: Schmidt
telephoneNumber: 1 555 123-4567
dn: uid=sss,dc=example,dc=com
cn: Steve Smith
cn: Steve S. Smith
sn: Smith
sn;lang-en: Smith
sn;lang-de: Schmidt
telephoneNumber: 1 555 765-4321
Такая команда:
ldapsearch -LLL -u -t "(uid=xyz)" jpegPhoto audio
выполнит поиск по стандартному поддереву записей, id пользователя в которых начинается с
xyz
DN будет выведен сам и также его дружественное представление (user friendly form, UFN); jpegPhoto и audio будут записаны
во временные файлы. Вывод выглядит так (если только одно значение найдено):
ldapsearch -LLL -s one -b "c=US" "(o=University*)" o description
выполнит одноуровневый на уровне
c=US
поиск записей, в которых имя организации (
o
) начинается словом
Universite
Будут найдены и выведены название организации и описание (
description
).
Вывод будет выглядеть так:
dn: o=University of Alaska Fairbanks,c=US
o: University of Alaska Fairbanks
description: Preparing Alaska for a brave new yesterday
description: leaf node only
dn: o=University of Colorado at Boulder,c=US
o: University of Colorado at Boulder
description: No personnel information
description: Institution of education and research
dn: o=University of Colorado at Denver,c=US
o: University of Colorado at Denver
o: UCD
o: CU/Denver
o: CU-Denver
description: Institute for Higher Learning and Research
dn: o=University of Florida,c=US
o: University of Florida
o: UFl
description: Warper of young minds
Диагностика
Код завершения равен 0, если ошибок не было.
Если ошибки были, код завершения отличен от 0 и на стандартный поток ошибок отправляются диагностические сообщения.
OpenLDAP разрабатывается и спопровождается в рамках проекта The OpenLDAP Project (http://www.openldap.org/). OpenLDAP
базируется на University of Michigan LDAP 3.3 Release.