Утилита командной строки для поиска в каталоге LDAP.
ldapsearch [-a преобразование] [-A] [-b база-поиска] [-B] [-c шаблон] [-C набор-символов]
[-d уровень-отладки][-D dn-подключения] [-e] [-f файл] [-F разделитель] [-G область] [-h хост-ldap]
[-i файл][-j ограничение] [-J ограничение] [-k] [-K файл-ключей]
[-l предельное-время] [-L] [-m механизм] [-M] [-n] [-N сертификат]
[-o тип-атрибута] [-O макс.-число] [-p порт-ldap] [-P пароль-файла-ключей] [-q размер-страницы]
[-R] [-s область] [-t] [-T секунд] [-U имя-пользователя] [-v] [-V версия]
[-w пароль | ?] [-x] [-y dn-прокси] [-Y] [-z ограничение-размера] [-Z]
filter [-9 p] [-9 s] [attrs…]
ldapsearch - это интерфейс командной строки к API ldap_search.
ldapsearch открывает соединение с сервером LDAP, подключается к нему и выполняет поиск с помощью фильтра. Фильтр должен быть указан в строковом формате фильтров LDAP (дополнительная информация о фильтрах приведена в описании API ldap_search в разделе API сервера каталогов).
Если утилита ldapsearch найдет одну или несколько записей, то значения указанных атрибутов этих записей будут переданы в стандартный поток вывода. Если атрибуты не указаны, то возвращаются все атрибуты.
Для просмотра справки по синтаксису команды ldapsearch введите ldapsearch -?.
(cn=*Z)
(cn=*Z*)
(cn=Z*)
(cn=*Z*)
(cn~=A)
(cn>=A)
(cn<=B)
Если утилите не удается обнаружить базу данных ключей, то применяется набор надежных базовых сертификатов сертификатных компаний, заданный по умолчанию. Файл базы данных ключей, как правило, содержит один или несколько сертификатов сертификатных компаний (CA), сертификаты которых принимает клиент. Сертификаты X.509 этого типа известны также как надежные базовые сертификаты.
Этот параметр включает опцию -Z. В случае работы с сервером каталогов в IBM® i указание опции -Z без опции -K и -N позволяет воспользоваться сертификатом, связанным с ИД приложения клиента сервера каталогов.
В случае работы с сервером каталогов в IBM i указание опции -Z без опции -K и -N позволяет воспользоваться сертификатом, связанным с ИД приложения клиента сервера каталогов.
-o sn -o -givenname
Таким образом, используется следующий синтаксис параметров сортировки:
[-]<имя-атрибута>[:<OID-правила-соответствия>]
где
По умолчанию операция ldapsearch не сортирует результаты.
Эти параметры полезны, например, при наличии у клиента ограниченного объема ресурсов, либо при подключении через медленное соединение. В целом они позволяют управлять скоростью возврата данных сервером в ответе на запрос. Вместо получения всех результатов сразу, вы можете получать их небольшими блоками (страницами). Кроме того, вы можете задавать продолжительность задержки между запросами страниц, предоставляя тем самым клиенту время для обработки результатов.
-q 25 -T 15
Если указан параметр -v (подробный вывод), то ldapsearch после каждой страницы указывает количество возвращенных на данный момент записей, например, всего возвращено 30 записей
Поддерживается указание нескольких параметров -q, что позволяет указать различные размеры страниц для разных этапов одной и той же операции поиска. В следующем примере первая страница содержит 15 записей, вторая - 20, а третья завершает операцию поиска с постраничной выдачей результатов:
-q 15 -q 20 -q 0
В следующем примере первая страница содержит 15 записей, а вторая и все последующие, вплоть до завершения операции - по 20 записей.
-q 15 -q 20
По умолчанию операция ldapsearch возвращает в ответе на запрос все записи. Разбиение на страницы по умолчанию не выполняется.
<фильтр>
::='('<компонент-фильтра>')'
<компонент-фильтра> ::= <and>|<or>|<not>|<simple>
<and> ::= '&' <список-фильтров>
<or> ::= '|' <список-фильтров>
<not> ::= '!' <фильтр>
<список-фильтров> ::= <фильтр>|<фильтр><список-фильтров>
<simple> ::= <тип-атрибута><тип-фильтра>
<значение-атрибута>
<тип-фильтра> ::= '='|'~='|'<='|'>='
Конструкция '~=' позволяет обозначить приблизительное соответствие. Параметры <тип-атрибута> и <значение-атрибута> задаются в соответствии со спецификацией RFC 2252, LDAP V3 Attribute Syntax Definitions. Кроме того, если указан тип фильтра '=', то <значение-атрибута> может быть равно *, что означает проверку наличия атрибута, либо может содержать текст и звездочку (*), что означает проверку наличия заданной подстроки.
Например, фильтр "mail=*" позволяет найти все записи, содержащие атрибут mail. Фильтр "mail=*@student.of.life.edu" найдет все записи, в которых атрибут mail заканчивается указанной строкой. Для применения в фильтре скобок перед символами скобок необходимо указывать обратную косую черту (\).
Дополнительная информация о допустимых фильтрах приведена в документе RFC 2254, A String Representation of LDAP Search Filters.
Если найдена одна или несколько записей, то каждая запись передается в поток вывода в следующем формате:
Отличительное имя (DN)
имя-атрибута=значение
имя-атрибута=значение
имя-атрибута=значение
…
Записи разделяются пустыми строками. Если с помощью опции -F задан символ-разделитель, то он будет применяться вместо символа `='. Если указана опция -t, то вместо фактического значения применяется имя временного файла. Если задана опция -A, то возвращается только часть, соответствующая значению "имя-атрибута".
ldapsearch "cn=john doe" cn telephoneNumber
выполняет поиск в поддереве записей, у которых атрибут commonName равен
"john doe" (применяется база поиска по умолчанию). В стандартный вывод
передаются значения commonName и telephoneNumber. При обнаружении двух записей
вывод может выглядеть, например, следующим образом: cn=John E Doe, ou="College of Literature, Science, and the Arts",
ou=Students, ou=People, o=University of Higher Learning, c=US
cn=John Doe
cn=John Edward Doe
cn=John E Doe 1
cn=John E Doe
telephoneNumber=+1 313 555-5432
cn=John B Doe, ou=Information Technology Division,
ou=Faculty and Staff, ou=People, o=University of Higher Learning, c=US
cn=John Doe
cn=John B Doe 1
cn=John B Doe
telephoneNumber=+1 313 555-1111
Команда:
ldapsearch -t "uid=jed" jpegPhoto audio
выполняет поиск в поддереве записей, в которых uid равен "jed". При этом применяется база поиска по умолчанию. Для найденных записей извлекаются и помещаются во временные файлы значения jpegPhoto и audio. При обнаружении одной записи, содержащей по одному значению каждого запрошенного атрибута вывод может выглядеть, например, следующим образом:
cn=John E Doe, ou=Information Technology Division,
ou=Faculty and Staff,
ou=People, o=University of Higher Learning, c=US
audio=/tmp/ldapsearch-audio-a19924
jpegPhoto=/tmp/ldapsearch-jpegPhoto-a19924
Команда:
ldapsearch -L -s one -b "c=US" "o=university*" o description
выполняет поиск на уровне c=US всех организаций, атрибут organizationName которых начинается со строки university. Результаты поиска отображаются в формате LDIF (см. описание формата обмена данными LDAP). В стандартный поток вывода передаются значения атрибутов organizationName и description. Вывод может выглядеть, например, следующим образом:
dn: o=University of Alaska Fairbanks, c=US
o: University of Alaska Fairbanks
description: Preparing Alaska for a brave new tomorrow
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: Shaper of young minds
…
Команда:
ldapsearch -b "c=US" -o ibm-slapdDN "objectclass=person" ibm-slapdDN
выполняет в поддереве c=US поиск всех записей класса persons. Специальный атрибут ibm-slapdDN, применяемый при поиске с сортировкой, позволяет упорядочить результаты поиска по строковому представлению отличительного имени (DN). Вывод может выглядеть, например, следующим образом:
cn=Al Edwards,ou=Widget Division,ou=Austin,o=IBM,c=US
cn=Al Garcia,ou=Home Entertainment,ou=Austin,o=IBM,c=US
cn=Amy Nguyen,ou=In Flight Systems,ou=Austin,o=IBM,c=US
cn=Arthur Edwards,ou=Widget Division,ou=Austin,o=IBM,c=US
cn=Becky Garcia,ou=In Flight Systems,ou=Austin,o=IBM,c=US
cn=Ben Catu,ou=In Flight Systems,ou=Austin,o=IBM,c=US
cn=Ben Garcia Jr,ou=Home Entertainment,ou=Austin,o=IBM,c=US
cn=Bill Keller Jr.,ou=In Flight Systems,ou=Austin,o=IBM,c=US
cn=Bob Campbell,ou=In Flight Systems,ou=Austin,o=IBM,c=US
Команда:
ldapsearch –h хост –o sn –b "o=ibm,c=us" "title=engineer"
возвратит все записи каталога сотрудников IBM, занимающих должность "engineer". Результаты будут упорядочены по фамилии (sn).
Команда:
ldapsearch –h hostname –o -sn –o cn –b "o=ibm,c=us" "title=engineer"
возвратит все записи каталога сотрудников IBM, название должности которых (title) начинается со строки "engineer". Результаты будут упорядочены по убыванию фамилии (sn), а затем по возрастанию по общему имени (cn).
Команда:
ldapsearch
–h хост –q 5 –T 3 –b o=ibm,c=us "title=engineer"
возвращает по пять записей на странице с задержкой между страницами 3 секунды. Будут возвращены все записи каталога сотрудников IBM, название должности равно "engineer".
В этом примере продемонстрирован поиск с применением объекта переадресации. Каталоги LDAP сервера каталогов могут содержать объекты переадресации только со следующими элементами:
Допустим, что в системе 'System_A' есть следующая запись переадресации:
dn: cn=Barb Jensen, ou=Rochester, o=Big Company, c=US
ref: ldap://System_B:389/cn=Barb Jensen,
ou=Rochester, o=Big Company, c=US
objectclass: referral
Все атрибуты, связанные с этой записью, должны находиться в системе 'System_B'.
Система System_B содержит следующую запись:
dn: cn=Barb Jensen, ou=Rochester, o=Big Company, c=US
cn: Barb Jensen
objectclass: organizationalPerson
sn: Jensen
telephonenumber: (800) 555 1212
Когда клиент отправляет запрос системе 'System_A', сервер LDAP в системе System_A возвращает клиенту следующий URL:
ldap://System_B:389/cn=Barb Jensen,
ou=Rochester, o=Big Company, c=US
С помощью этой информации клиент отправляет запрос в систему System_B. Если запись в системе System_A содержит какие-либо еще атрибуты, помимо dn, objectclass и ref, то сервер игнорирует их (если не указан флаг -R, означающий игнорирование переадресации).
Получив от сервера в ответ на запрос ссылку, клиент отправляет новый запрос на сервер с указанным адресом. Новый запрос имеет ту же область, что и исходный. Результаты этого поиска зависят от указанного значения области поиска (-b).
Если указано значение -s base, как показано ниже:
ldapsearch -h System_A -b 'ou=Rochester, o=Big Company, c=US'
-s base 'sn=Jensen'
то операция поиска возвращает все атрибуты всех записей с 'sn=Jensen', находящихся в системах System_A и System_B в 'ou=Rochester, o=Big Company, c=US'.
Если указано значение -s sub, как показано ниже:
ldapsearch -s sub "cn=John"
то сервер будет искать все суффиксы и вернет все записи, для которых "cn=John". Такая операция называется поиском с пустой базой в поддереве. Вместо того, чтобы запускать несколько поисков с различными суффиксами в базе, поиск ведется по всему каталогу с помощью всего одного оператора. Поиск такого типа требует больше времени и ресурсов системы, поскольку в поиск вовлекается весь каталог (все суффиксы).
Если указано значение -s sub, как показано ниже:
ldapsearch -h System_A -b 'ou=Rochester, o=Big Company, c=US'
-s sub 'sn=Jensen'
то операция поиска возвращает все атрибуты всех записей с 'sn=Jensen', находящихся в системах System_A и System_B на одном уровне с 'ou=Rochester, o=Big Company, c=US' или на более глубоких уровнях.
Если указано значение -s one, как показано ниже:
ldapsearch -h System_A -b 'ou=Rochester, o=Big Company, c=US'
-s one 'sn=Jensen'
то ни в одной системе значения не будут найдены. Вместо этого сервер возвратит клиенту ссылку на сервер:
ldap://System_B:389/cn=Barb Jensen,
ou=Rochester, o=Big Company, c=US
В этом случае клиент отправит следующий запрос:
ldapsearch -h System_B -b 'ou=Rochester, o=Big Company, c=US'
-s one 'sn=Jensen'
В этом случае результаты поиска также будут отсутствовать, поскольку запись
dn: cn=Barb Jensen, ou=Rochester, o=Big Company, c=US
находится в
ou=Rochester, o=Big Company, c=US
Опция -s one указывает, что следует искать записи на уровне, непосредственно следующем за
ou=Rochester, o=Big Company, c=US
При отсутствии ошибок код завершения равен 0. При наличии ошибок код завершения отличен от нуля, и создаются сообщение об ошибках.