使用Python获取Windows Active目录中组的名称

2024-06-16 12:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用此库在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获取组的显示名称,而不是实际的对象名称。如何获取对象名?在

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


Tags: 对象内存名称httphtmlgroupcndirectory
1条回答
网友
1楼 · 发布于 2024-06-16 12:35:48

这就是我最后要做的:

    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)

相关问题 更多 >