0

我正在使用这个库与 Python 中的 Active Directory 进行交互:

http://timgolden.me.uk/python/ad_cookbook.html

我正在尝试访问这样的组名:

groups = []
for group in active_directory.search(objectClass='group'):
    groups.append(str(group.cn))

我的第一个问题是group.cn获取组的显示名称而不是实际的对象名称。如何获取对象名称?

我的第二个问题是运行此代码会占用大量内存。当 Active Directory 中有数千个组时,我的程序将使用数百兆甚至一两个 gig 的内存。当有组嵌套在其他组中时尤其如此。在我获得所有组名之后,我仍然使用所有这些内存有什么原因吗?

4

1 回答 1

1

这就是我最终做的事情:

    results = None
    try:    
        connection = ldap.open(str(self.hostnameLineEdit.text()))
        connection.simple_bind_s(str(self.usernameLineEdit.text()), str(self.passwordLineEdit.text()))
        userDNSDomain = os.environ['USERDNSDOMAIN']
        userDNSDomain = userDNSDomain.split('.')
        base = ""
        for dc in userDNSDomain:
            base += "dc=" + dc + ","
        base = base[:-1]
        #print base
        resultID = connection.search(base,ldap.SCOPE_SUBTREE,'(objectClass=group)')
        resultTypes, results = connection.result(resultID, 0)
    except ldap.LDAPError, e:
        self.messageBox("LDAP Error: " + str(e))
    if results != None:
        while results[0][0] != None:
            #print results[0][1]['cn']
            self.groupsListWidget.addItem(QString(results[0][1]['cn'][0]))
            resultTypes, results = connection.result(resultID, 0)
于 2012-07-09T18:14:49.863 回答