我正在使用ruby的net / ldap库来解决这个问题,但实际上驱动程序语言并不重要。我需要找到一种方法,以便能够从系统中获取所有用户,并找出哪些用户没有分配给该帐户的电子邮件。可能吗?
我可以通过LDAP连接甚至创建新记录,并可以使用通配符条目来过滤结果来返回查询。
给定我创建一个过滤器来查找以三个9开头的cn:
filter = Net::LDAP::Filter.eq("cn", "999*")
@connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz",
:filter => filter)
然后我的结果计数可能是42。
给定i创建相同的过滤器但仅请求1 9,查询失败并返回false
filter = Net::LDAP::Filter.eq("cn", "9*")
@connection.search(:base => "cn=Manager, dc=foo, dc=bar, dc=biz",
:filter => filter)
如果我只是请求"cn", "*"
,我应该说“给我所有的cn。”
”
答案 0 :(得分:0)
因此,问题的简短回答是,这一切都取决于您的架构的设置方式。如果要设置LDAP模式,则需要具有多个具有各种cn(公用名)标识符的记录组,例如cn=activeUsers
和cn=inactiveUsers
,这将允许您在列表中查询比在我的情况下。
答案 1 :(得分:0)
我认为您在LDAP服务器的搜索操作上设置了时间限制问题。
如果你有一个非常大的搜索需要花费很多时间,那么LDAP服务器会返回错误“超出时间限制”而没有数据。
在这种情况下,Ruby-Ldap会引发异常LDAP :: ResultError。我不知道Net-Ldap的表现如何。
尝试提高LDAP服务器的时间限制或使用更严格的搜索过滤器,例如'(&(cn = 9 *)(active = TRUE))'。用您的活跃用户标准替换此处'active = TRUE'。