【问题标题】:ldapsearch with partial numeric filter带有部分数字过滤器的 ldapsearch
【发布时间】:2013-11-12 21:42:53
【问题描述】:

这里是 Sun 目录服务器。我可以很容易地在过滤器中为绝对是字符串的字段使用星号,例如,获取所有以某个字母开头的 uid 列表。但是,我不能使用相同的语法来获取例如以某个数字开头的所有 uidNumber。

以下是我获得的各种命令输出的一些描述。

返回所有以字母 b 开头的 uid

ldapsearch -D "cn=Directory Manager" -h server -b "ou=people,dc=test,dc=com" "uid=b*" "uid"

不返回值:

ldapsearch -D "cn=Directory Manager" -h server -b "ou=people,dc=test,dc=com" "uidNumber=446*" "uidNumber"

但是,这将在 uidNumber 的任何位置返回 446 的任何内容:

ldapsearch -D "cn=Directory Manager" -h server -b "ou=people,dc=test,dc=com" "uidNumber=*446*" "uidNumber"

我正在寻找任何 START 以 446 开头的 uidNumbers。通过上面,它给了我以 446 开头的那些,但它也给了我像“3446”这样的那些。

我一定忽略了一些小细节,因为这看起来不应该那么复杂。

【问题讨论】:

  • 在我的服务器中,uidnumber 没有子字符串匹配规则。最后两个示例使用子字符串过滤器,因此它们不起作用。

标签: string search ldap comparison ldap-query


【解决方案1】:

嗯。 uidNumber 指定使用integerMatch 匹配规则。 “当且仅当属性值和断言值是相同的整数值时,该规则才评估为 TRUE。” RFC 4517

【讨论】:

  • 这正是我在我的问题中所说的: 446 给了我任何 446. 446* 但是给我没有结果(当我期望它会给我任何结果时)以 446 开头)。
  • 刚刚试验,我发现 (&(uidNumber>=4460)(uidNumber
  • 考虑通知 LDAP 管理员uidNumber 的排序索引可能是必要的,因为您正在使用排序断言(>= 等)。
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 2018-09-30
相关资源
最近更新 更多