Поиск в регулярных выражениях OpenLDAP с помощью сценария оболочки - PullRequest
0 голосов
/ 17 марта 2012

Для базы данных OpenLDAP мне нужно найти всех пользователей, которые имеют телефонный номер, соответствующий шаблону регулярных выражений, и находятся в данном организационном подразделении.

В соответствии с этим: Поиск в LDAP с использованием регулярного выражения невозможен с помощью ldapsearch (что в противном случае было бы моим первым выбором).

Я хотел бы выполнить наименьшую возможную работу на стороне клиента, и запрос всех пользователей из организационной единицы и фильтрация их с помощью grep или чего-то подобного представляется слишком ресурсоемкой. Есть ли лучший способ сделать это?

Кроме того, я не очень знаком с shell, поэтому немного боюсь "sed", но я слышал, что он мощный и хорошо работает при фильтрации регулярных выражений. Если бы мне нужно было выполнить фильтрацию на стороне клиента, что было бы самым простым способом (без ущерба для производительности)?

И о пакетных входах. Если я получу много неполных телефонных номеров в CSV-файле, и каждый частичный номер может иметь тип «префикс» / «постфикс» / «регулярное выражение» (так что это буксирные столбцы: тип и частичный номер), что будет лучшим С точки зрения производительности?

  1. Должен ли я просто собрать всех пользователей в подразделении организации и отфильтровать их по сценарию оболочки (перебирая всех пользователей и пытаясь сопоставить любое из чисел)?
  2. Или я должен сделать запрос для каждого числа (это приемлемый вариант, если в запросе ldap возможен фильтр регулярных выражений для атрибутов).

На моем уровне знаний первый путь - это путь, но есть ли лучшее решение?

Я использую OpenLDAP 2.4.23, который имеет значение в любом случае.

1 Ответ

1 голос
/ 17 марта 2012

Результаты использования регулярных выражений с данными LDAP могут не соответствовать вашим ожиданиям. Данные LDAP - это не строки, а конкретные типы данных, определенные схемой, и приложение всегда должно извлекать схему, чтобы узнать, как обращаться со значениями атрибутов. Атрибут telephoneNumber имеет определенный синтаксис, и регулярные выражения могут не работать. В целом, для сопоставления и сопоставления данных, размещенных на сервере каталогов, клиенты LDAP должны использовать правила сопоставления. На самом деле, лучшая практика заключается в том, что приложения должны всегда обеспечивать соответствие правилам, а не операторам сравнения на родном языке или регулярным выражениям. Для получения дополнительной информации см. LDAP: Практика программирования и LDAP: Использование правил соответствия .

...