Я получаю сообщение об ошибке «code = 53, message = Unwilling to perform» при просмотре базы данных eDirectory treebase = «ou = Users, o = MTC». Мой сценарий ruby может прочитать около 126 записей из eDirectory, а затем останавливается и выводит эту ошибку. Я понятия не имею, почему это происходит.
Я использую 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
почта:
--->UVogler@mtc.ca.gov
ФИО:
--->Ursula Vogler
ОУ:
--->Legislation and Public Affairs
dn:
--->cn=uvogle,ou=Users,o=MTC
сп:
--->uvogle
Всего найдено 126 записей.
Код OpenStruct = 53, сообщение = "Не желает выполнять"
Итак, проблема заключается в получении UID для пользователя 126 (исходя из того, что я здесь вижу)? Или вы получаете UID для всех, а затем он останавливается после полного вывода для пользователя 126?
Что касается uid: при установке Novell eDirectory по умолчанию «uid» (нижний регистр) сопоставляется с уникальным идентификатором Novell, который совпадает с CN. Если вы хотите получить числовой uid в стиле Unix, вам понадобится атрибут uidNumber. Возможно, администратор вашей установки выполнил несколько разных сопоставлений LDAP и uid не указан для этого пользователя (uidNumber не является обязательным или атрибутом по умолчанию в eDirectory, он получается через вспомогательный класс posixUser).
С другой стороны, если он дает все 126, а затем терпит неудачу, то возможно, что администратор установил предел поиска для объекта сервера LDAP для этого сервера в eDirectory. По умолчанию такого ограничения нет. Вы админ? Есть ли у вас другие инструменты (например, труднодоступный Java LDAP Browser) для устранения неполадок LDAP путем просмотра исходных записей?
Вот что я нашел с помощью Google Code Search:
unwillingToPerform (53), -- unable to sort
unwillingToPerform (53) -- server cannot process control
У вас есть доступ к серверу eDirectory? Т.е. Это рабочий или рабочий экземпляр eDirectory?
Если нет, попросите админа посмотреть https: // serverIP: 8030 / nds / trace с включенным переключателем LDAP в конфигурации трассировки. Посмотрите на запрос и результаты и посмотрите, показывает ли eDirectory лучшую ошибку в журналах Dstrace.
В качестве примера того, что вы можете увидеть, в этой статье я рассмотрел использование LDAP в SAP GRC: Устранение неполадок интерфейса LDAP SAP GRC и это показывает, как должны выглядеть запрос и ответ, на некоторых примерах его работы и сбоя в других.