search_s

问题描述

我看了一些例子和回应,但是我很困惑。几分钟前就可以了,现在却没有返回结果。没有代码更改。

我拥有的测试代码从LDAP角色组中提取成员,并打印成员DN。几分钟前它已经起作用,现在它一直返回空结果。我还打印了ldap_result,它也为空。

def ldapgroupmembers():
    try:
        username = str(raw_input('Email: '))
        password = str(getpass.getpass())
        l = ldap.initialize("ldap://company.co.za")
        l.simple_bind_s(username,password)
        myfilter = "(&DN=GROUP)(cn=My-RG-Group))"
        ldap_result = l.search_s("OU=MyGroups,OU=Role Groups,OU=Groups,OU=CompanyOU,DC=company,DC=co,DC=za",ldap.ScopE_SUBTREE,myfilter,['member'])
        for dn in ldap_result[0][1]['member']:
            print dn
    except ldap.INVALID_CREDENTIALS:
        print "Invalid credentials"
        return "Invalid credentials"
    except ldap.SERVER_DOWN:
        print "Server down"
        return "Server down"
    except ldap.LDAPError,e:
        if type(e.message) == dict and e.message.has_key('desc'):
            return "Other LDAP error: " + e.message['desc']
        else:
            print "Other LDAP error: "
            return "Other LDAP error: " + e
    finally:
        l.unbind_s()
    return "Succesfully authenticated"

非常感谢您的帮助。

解决方法

我发现了问题。事实证明,我从未关闭过myfilter括号,而是删除了在dn=GROUP上进行过滤的第一个括号集