0

このライブラリを使用して、PythonでActiveDirectoryを操作しています。

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

私はこのようなグループ名にアクセスしようとしています:

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

私の最初の問題はgroup.cn、実際のオブジェクト名ではなく、グループの表示名を取得することです。オブジェクト名を取得するにはどうすればよいですか?

私の2番目の問題は、このコードを実行すると大量のメモリを消費することです。Active Directoryに数千のグループがある場合、私のプログラムは数百のメガ数、さらには1ギガまたは2ギガのメモリを使用します。これは、他のグループ内にネストされたグループがある場合に特に当てはまります。すべてのグループ名を取得した後も、そのメモリをすべて使用している理由はありますか?

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 に答える