当我遍历 eDirectory 树库 = “ou=Users,o=MTC” 时,我收到此错误“代码 = 53,消息 = 不愿意执行”。我的 ruby 脚本可以从 eDirectory 读取大约 126 个条目,然后它停止并打印出此错误。我不知道为什么会发生这种情况。
我使用的是 ruby net:LDAP 库版本 0.0.4。以下是代码摘录。
require 'rubygems'
require 'net/ldap'
ldap = Net::LDAP.new :host => "10.121.121.112",
:port => 389,
:auth => {:method => :simple, :username => "cn=abc,ou=Users,o=MTC", :password => "123"
}
filter = Net::LDAP::Filter.eq( "mail", "*mtc.ca.gov" )
treebase = "ou=Users,o=MTC"
attrs = ["mail", "uid", "cn", "ou", "fullname"]
i = 0
ldap.search( :base => treebase, :attributes => attrs, :filter => filter ) do |entry|
puts "DN: #{entry.dn}"
i += 1
entry.each do |attribute, values|
puts " #{attribute}:"
values.each do |value|
puts " --->#{value}"
end
end
end
puts "Total #{i} entries found."
p ldap.get_operation_result
这是输出和最后的错误。非常感谢您的帮助。
DN:cn=uvogle,ou=用户,o=MTC
邮件:
--->[email protected]
全名:
--->Ursula Vogler
欧:
--->Legislation and Public Affairs
域名:
--->cn=uvogle,ou=Users,o=MTC
中国:
--->uvogle
共找到 126 条条目。
OpenStruct 代码=53,消息=“不愿意执行”
答案1
那么,问题在于检索用户 126 的 UID(基于我在此处看到的内容)?还是您获取了每个人的 UID,然后在用户 126 的完整输出后停止?
关于 uid:在默认的 Novell eDirectory 安装中,“uid”(小写)映射到 Novell uniqueID,它与 CN 相同。如果您希望获得 Unix 样式的数字 uid,那么您将需要 uidNumber 属性。可能是您的安装管理员进行了一些不同的 LDAP 映射,并且该用户没有 uid(uidNumber 不是 eDirectory 中的必需或默认属性,它是通过 posixUser 辅助类获取的)。
另一方面,如果它给出了全部 126 个然后失败,那么管理员可能在 eDirectory 中为此服务器的 LDAP 服务器对象设置了搜索条目限制。默认情况下不存在这样的限制。您是管理员吗?您是否有其他工具(例如现在很难找到的 Java LDAP 浏览器)可以通过查看原始条目来排除 LDAP 故障?
答案2
这是我使用 Google 代码搜索找到的内容:
unwillingToPerform (53), -- unable to sort
unwillingToPerform (53) -- server cannot process control
答案3
您有权访问 eDirectory 服务器吗?即这是开发版还是生产版 eDirectory 实例?
如果没有,请要求管理员观看https://服务器IP:8030/nds/trace在跟踪配置中启用 LDAP 开关。查看查询和结果,并查看 eDirectory 是否在 Dstrace 日志中显示更好的错误。
作为您可能看到的一个示例,我在本文中研究了 SAP GRC 对 LDAP 的使用: SAP GRC 的 LDAP 接口故障排除 这显示了查询和响应应该是什么样的,其中一些示例有效,另一些示例失败。