Упрощение фильтра LDAP

Мне нужно создать фильтр LDAP с очень длинным условием ИЛИ, и мне интересно, может ли быть лучший способ сделать это.

В настоящее время строка запроса, которую я использую,

(|(userid=user1)(userid=user2)(userid=user3)....) 

В этой строке запроса может быть до 200 пользователей. Пользователи, о которых идет речь, не входят в какую-либо конкретную группу LDAP и не имеют других общих атрибутов; они распределены случайным образом по всему каталогу LDAP. Мой единственный способ определить тех пользователей, которых я интересую, – это их идентификатор пользователя. Я также не контролирую сервер LDAP и не могу создать группу пользователей (в этом контексте это также не имеет смысла).

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

Дополнительная справочная информация: полный каталог LDAP очень большой, десятки тысяч пользователей. Пользователи, о которых идет речь, были выбраны, чтобы взять учебный класс, а компьютеры в классе разрешат только тем, кто выбран для входа в систему. Список пользователей (и, следовательно, мой фильтр) меняется каждые несколько недель.

Основная реализация будет openldap на RedHat 7.

  • Ошибка перекрытия политики OpenLDAP при загрузке
  • Судо для OpenLDAP
  • Samba не запускается на сервере Ubuntu 16.10
  • Файлы, которые необходимо обновить в /etc/pam.d/ для поддержки nss-pam-ldapd для SSH
  • Перезапуск службы клиентов LDAP
  • Как запустить службу при загрузке после получения учетной записи ldap
  • Как использовать аутентификацию LDAP Zimbra для svn
  • Как ldap работает на клиенте?
  • One Solution collect form web for “Упрощение фильтра LDAP”

     #!/usr/bin/env perl use 5.14.0; use warnings; use Net::LDAP::Util qw(escape_filter_value); # users as arguments or via standard input chomp(@ARGV = readline *STDIN) unless @ARGV; print '(|'; for my $user (@ARGV) { print '(userid=' . escape_filter_value($user) . ')'; } say ')'; 

    И тогда что-то вроде

     $ sudo yum -y install perl-LDAP ... yum flails wildly here ... $ perl whatyoucalledtheabovecode foo bar zot (|(userid=foo)(userid=bar)(userid=zot)) $ 
    Linux и Unix - лучшая ОС в мире.