как я могу избежать получения (недокументированного) исключения в следующем коде?
import ldap
import ldap.sasl
connection = ldap.initialize('ldaps://server:636', trace_level=0)
connection.set_option(ldap.OPT_REFERRALS, 0)
connection.protocol_version = 3
sasl_auth = ldap.sasl.external()
connection.sasl_interactive_bind_s('', sasl_auth)
baseDN = 'ou=org.com,ou=xx,dc=xxx,dc=com'
filter = 'objectclass=*'
try:
result = connection.search_s(baseDN, ldap.SCOPE_SUBTREE, filter)
except ldap.REFERRAL, e:
print "referral"
except ldap.LDAPError, e:
print "Ldaperror"
Бывает, что указанный в примере baseDN является реферальным. Когда я запускаю этот код, я получаю referral
в качестве вывода.
Чего бы я хотел, так это того, чтобы python-ldap просто пропускал его или игнорировал, не вызывая странного исключения (я не могу найти документацию об этом)?
(это может помочь или нет) Проблема возникла, когда я искал baseDN выше в дереве. Когда я искал «ou=xx,dc=xxx,dc=com», он начал зависать в моей производственной среде, тогда как в среде разработки все работает отлично. Когда я начал смотреть на него, я обнаружил, что он зависает на реферальных ветках. Как я могу сказать python-ldap игнорировать ссылки? Код выше не работает, как я хочу.