Назад | Перейти на главную страницу

Искать в дереве LDAP с подстановочным знаком для уровня узла?

Учитывая дерево LDAP (в моем случае AD), существует ли способ поиска с использованием подстановочного знака на определенном уровне в дереве?

т.е. мне интересно, есть ли эквивалентный способ поиска LDAP таким же образом, как вы могли бы сделать ls /opt/*/lib в Linux.

Я не думаю, что есть одна строчка, которая может это сделать. Тем не менее, вы можете написать сценарий (или написать код).

Практически любой поиск LDAP, который вы выполняете в AD, будет включать ldap_search_s () функция. Одна из вещей, которая абсолютно необходима для функции, - это база, с которой можно начать поиск. Например, «DC = домен, DC = com». Вы можете использовать любое подразделение или контейнер в качестве базы для начала поиска. В вашем примере это может выглядеть так: «OU = opt, DC = domain, DC = com». В этой строке нельзя использовать подстановочные знаки.

Итак, в вашем гипотетическом сценарии вы запускаете запрос с базой поиска, указанной выше, и используете фильтр (objectclass = container) и указываете область (база, один уровень или поддерево) поиска. Это даст вам список всех контейнеров в вашей базе поиска.

Затем в своем сценарии вы можете выполнить больше запросов, включающих каждый из элементов в вашем списке контейнеров. ("OU = lib,OU = Даллас, OU = opt, DC = domain, DC = com "," OU = lib,OU = атланта, OU = opt, DC = domain, DC = com "и т. Д.)

Биты, выделенные полужирным шрифтом, представляют переменную в вашем скрипте, и вы должны сделать отдельный запрос для каждого контейнера, который вы нашли при первом поиске контейнеров.

Для меня это звучит довольно безумно. Вам также нужно будет выяснить, как бороться с рекурсией при поиске поддерева и т. Д.

Другой подход заключается в том, чтобы просто найти объект (ы), который вы намеревались искать, и программно проверить, что непосредственный родительский контейнер каждого объекта - OU = lib, и выбросить их, если это не так. Это, вероятно, немного менее безумно.

Но дело в том, что вам придется писать сценарий или кодировать это. Подстановочные знаки могут использоваться для атрибутов объектов * (номер телефона = ** 555) * или типов объектов. (objectclass = пользователь), но не для узлов в базе поиска.