我搜索过这个主题,但我找到的只是过滤器,它返回不存在某个属性的条目,例如:
(!(manager=*))
Run Code Online (Sandbox Code Playgroud)
但是,我想查找属性存在的条目,但是具有空值(即空/空字符串).我可以使用LDAP过滤器执行此操作吗?如果是,如何执行此操作?
编辑:
只是为了确认,上面的过滤器找到没有属性的条目,但没有找到属性为空的条目(空字符串).
这取决于LDAP实现还是什么?
jwi*_*eke 20
从LDAP,没有用于确定空字符串的查询方法.
最佳做法是将数据输入清理到LDAP,因为LDAP中的空值或空值根本没有值.
要确定这一点,您需要使用值查询all(manager =*),然后使用代码确定那些是"space"或null值的代码.
正如Terry所说,在DN语法的属性中存储空值或空值是错误的.
某些LDAP服务器实现不允许输入DN条目不存在的DN.
也许,如果您的DN一致,您可以使用以下内容:
(&(!(manager=cn*))(manager=*))
Run Code Online (Sandbox Code Playgroud)
这应该返回经理的值的经理的任何值,并且它不以"cn"开头.
但是,某些LDAP实现不允许对DN语法属性进行子字符串搜索.
-Jim
使用搜索空值 \00
例如:
ldapsearch -D cn=admin -w pass -s sub -b ou=users,dc=acme 'manager=\00' uid manager
Run Code Online (Sandbox Code Playgroud)
确保在命令行上使用null值来使用它周围的引号以防止OS shell向LDAP发送空字符.例如,这不起作用:
ldapsearch -D cn=admin -w pass -s sub -b ou=users,dc=acme manager=\00 uid manager
Run Code Online (Sandbox Code Playgroud)
有各种网站引用它,以及其他特殊字符.例:
小智 6
这篇文章http://technet.microsoft.com/en-us/library/ee198810.aspx引导我找到解决方案.唯一的变化是感叹号的位置.
(!manager=*)
Run Code Online (Sandbox Code Playgroud)
它似乎正如所希望的那样工作.
| 归档时间: |
|
| 查看次数: |
100372 次 |
| 最近记录: |