使用shell脚本进行OpenLDAP正则表达式搜索

时间:2012-03-17 16:12:10

标签: regex performance bash shell ldap

对于OpenLDAP数据库,我需要找到所有具有匹配正则表达式模式的电话号码并且位于给定组织单位的用户。

根据这个:LDAP search using regular expression这是不可能的ldapsearch(否则本来是我的第一选择。)

我想在客户端上做尽可能少的工作,并从组织单位查询所有用户并通过grep或类似的东西过滤它们似乎太耗费资源。有没有更好的方法呢?

另外我对shell不太熟悉,所以我有点害怕“sed”,但我听说它很强大并且在正则表达式过滤方面表现很好。如果我需要做过滤客户端这是最简单的方法(不影响性能)?

关于批量输入。如果我在CSV文件中获得了大量部分电话号码,并且每个部分号码都可以具有“前缀”/“后缀”/“正则表达式”类型(因此它是两个颜色:类型和部分号码),那么最好的是什么性能明智?

  1. 我应该只获取组织单位中的所有用户并通过shell脚本过滤它们(迭代所有用户并尝试匹配任何数字)?
  2. 或者我应该对每个数字进行查询(如果在ldap查询中可以使用属性的正则表达式过滤器,这只是一个可行的选项。)
  3. 在我的知识水平上,第一个是要走的路,但是有更好的解决方案吗?

    我正在使用OpenLDAP 2.4.23,无论如何都很重要。

1 个答案:

答案 0 :(得分:1)

将正则表达式与LDAP数据一起使用的结果可能不是您所期望的。 LDAP数据不是字符串,而是由架构定义的特定类型的数据,应用程序必须始终检索架构以了解如何处理属性值。 telephoneNumber属性具有特定语法,正则表达式可能无效。通常,LDAP客户端必须使用匹配规则来比较和匹配目录服务器中的数据。实际上,最佳实践是应用程序必须始终确保匹配规则,而不是本机语言比较运算符或正则表达式。有关详情,请参阅LDAP: Programming PracticesLDAP: Using Matching Rules