LDAP-запрос с использованием Python: всегда безрезультатно - PullRequest
0 голосов
/ 17 июня 2010

Я пытаюсь использовать python для запроса к серверу LDAP, и он всегда не дает мне никакого результата. и кто-нибудь помочь мне найти, что не так с моим кодом Python? он работает нормально без исключений, и это всегда не имеет никакого результата. я играл с фильтром вроде "cn = partofmyname ", но просто не повезло. спасибо за помощь

import ldap



try:
    l = ldap.open("server")
    l.protocol_version = ldap.VERSION3
    l.set_option(ldap.OPT_REFERRALS, 0)
    output =l.simple_bind("cn=username,cn=Users,dc=domian, dc=net",'password$R')
    print output
except ldap.LDAPError, e:
    print e

baseDN = "DC=domain,DC=net"
searchScope = ldap.SCOPE_SUBTREE
## retrieve all attributes - again adjust to your needs - see documentation for more options
retrieveAttributes = None

Filter = "(&(objectClass=user)(sAMAccountName=myaccount))"

try:
    ldap_result_id = l.search(baseDN, searchScope, Filter, retrieveAttributes)
    print ldap_result_id
    result_set = []
    while 1:
        result_type, result_data = l.result(ldap_result_id, 0)
        if len(result_data) == 0:
            print 'no reslut'
            break
        else:
            for i in range(len(result_set)):
                for entry in result_set[i]:
                    try:
                        name = entry[1]['cn'][0]
                        email = entry[1]['mail'][0]
                        phone = entry[1]['telephonenumber'][0]
                        desc = entry[1]['description'][0]
                        count = count + 1
                        print "%d.\nName: %s\nDescription: %s\nE-mail: %s\nPhone: %s\n" %\
                              (count, name, desc, email, phone)
                    except:
                        pass
                        ## here you don't have to append to a list
                        ## you could do whatever you want with the individual entry
            #if result_type == ldap.RES_SEARCH_ENTRY:
             # result_set.append(result_data)
            #  print result_set
except ldap.LDAPError, e:
    print e
l.unbind()

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

я нашел свою проблему.

simple_bind("cn=username,cn=Users,dc=domian, dc=net",'password$R')

должно быть

   simple_bind("domain/username",'password$R')
0 голосов
/ 17 июня 2010

Я настоятельно рекомендую вам изучить сетевой трафик с помощью Wireshark (www.wireshark.org), чтобы увидеть, что происходит на уровне протокола. Кроме того, получите инструмент, такой как Softerra LDAP browser 2.6 (бесплатная версия по адресу http://www.ldapbrowser.com/download.htm), для проверки A / D-сервера и организации каталогов.

Если у вас все еще есть проблемы, опубликуйте сводку того, что вы нашли с помощью этих инструментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...