Ruby net:LDAP返回“code = 53 message =不愿意执行”的错误

当我遍历eDirectory的treebase =“ou = Users,o = MTC”时,我得到这个错误“code = 53,message =不愿意执行”。 我的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 

OU:

  --->Legislation and Public Affairs 

DN:

  --->cn=uvogle,ou=Users,o=MTC 

CN:

  --->uvogle 

find126条logging。

OpenStruct代码= 53,消息=“不愿意执行”

所以,问题是检索用户的UID(基于我在这里看到的)? 还是你得到每个人的UID,然后停止在用户126的完整输出后?

关于uid:在默认的Novell eDirectory安装中,“uid”(小写)映射到Novell uniqueID,与CN相同。 如果你正在寻找一个Unix风格的数字uid,那么你会想要的uidNumber属性。 您的安装pipe理员可能已经完成了一些不同的LDAP映射,并且该用户不存在uid(uidNumber不是eDirectory中的必需属性或默认属性,它是通过posixUser辅助类获取的)。

另一方面,如果全部提供了126个然后失败,那么pipe理员可能会在eDirectory中为此服务器的LDAP服务器对象设置search条目限制。 默认情况下不存在这样的限制。 你是pipe理员吗? 您是否有其他工具(例如现在很难find的Java LDAP浏览器)通过查看原始条目对LDAP进行故障排除?

这是我使用谷歌代码searchfind的:

 unwillingToPerform (53), -- unable to sort unwillingToPerform (53) -- server cannot process control 

你有权访问eDirectory服务器吗? 即这是一个开发或生产eDirectory实例?

如果没有,请让pipe理员通过在跟踪configuration中启用的LDAP交换机观看https:// serverIP:8030 / nds / trace 。 查看查询和结果,并查看eDirectory是否在Dstrace日志中显示更好的错误。

作为您可能看到的一个示例,我在本文中通过SAP GRC使用LDAP: SAP GRC的LDAP接口故障诊断,并显示查询和响应应该看起来像什么样的一些示例工作和其他失败。