Python-LDAP mit OpenDirectory

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
halo23
User
Beiträge: 20
Registriert: Freitag 30. Oktober 2009, 08:01

Hallo,
ich würde gerne ein Skript schreiben, mit dm ich Daten aus einem OpenDirectory auslesen kann.
Ich verwende dazu Python2.5 auf einem 10.5.8er Mac und habe dort mit

Code: Alles auswählen

sudo easy_install python-ldap
python-ldap installiert.
Die OpenDirectory BDB liegt auf einem anderen Rechner, einem 10.5.8er Mac OS X Server.
Bei dem Versuch eine Verbindung mit OpenDirectory wie folgt aufzubauen,

Code: Alles auswählen

#!/usr/bin/env python2.5

import ldap
import sys
import os

def connectLDAP(ldapUrl,ldapUser,ldapPassword):
    connection = ldap.initialize(ldapUrl)
    connection.set_option(ldap.OPT_PROTOCOL_VERSION,ldap.VERSION3)
    connection.simple_bind_s(ldapUser,ldapPassword)
    return connection
    
def main():
    ldapUrl = "ldap://rechner.netz.intern"
    ldapUser = "diradmin"
    ldapPassword = "xxxxxx"
    connectLDAP(ldapUrl,ldapUser,ldapPassword)

if __name__ == '__main__':
    main()
bekommen ich aber immer folgenden Fehlercode.

Code: Alles auswählen

Traceback (most recent call last):
  File "./ldap.py", line 20, in <module>
    main()
  File "./ldap.py", line 17, in main
    connectLDAP(ldapUrl,ldapUser,ldapPassword)
  File "./ldap.py", line 8, in connectLDAP
    connection = ldap.initialize(ldapUrl)
AttributeError: 'module' object has no attribute 'initialize'
Hat jemand eine Idee was ich falsch mache?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Du benennst dein Skript wie das Paket, das du einbindest (``ldap``).
Das darfst du nicht machen!
halo23
User
Beiträge: 20
Registriert: Freitag 30. Oktober 2009, 08:01

OK, das wusste ich nicht, Danke für den Tipp aber der Fehler erscheint noch immer.

Code: Alles auswählen

Traceback (most recent call last):
  File "./odconnect.py", line 20, in <module>
    main()
  File "./odconnect.py", line 17, in main
    connectLDAP(ldapUrl,ldapUser,ldapPassword)
  File "./odconnect.py", line 8, in connectLDAP
    connection = ldap.initialize(ldapUrl)
AttributeError: 'module' object has no attribute 'initialize'
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Liegt vielleicht noch die ``ldap.pyc`` in dem Verzeichnis?
halo23
User
Beiträge: 20
Registriert: Freitag 30. Oktober 2009, 08:01

Ja, danke, Du hattest Recht!

Nun klappt die Abfrage - man kann die ja sogar als anonymous machen:

Code: Alles auswählen

#!/usr/bin/env python2.5

import ldap
import sys
import os

def connectLDAP(ldapUrl,ldapUser,ldapPassword):
    connect = ldap.initialize(ldapUrl)
    connect.set_option(ldap.OPT_PROTOCOL_VERSION,ldap.VERSION3)
    connect.simple_bind_s(ldapUser,ldapPassword)
    return connect
    
def openDirectoryResult():    
    ldapUrl = "ldap://rechner.netz.intern:389/"
    ldapUser = ""
    ldapPassword = ""
    opendirectory = connectLDAP(ldapUrl,ldapUser,ldapPassword)

    result = opendirectory.search_s(
    'cn=users,dc=rechner,dc=netz,dc=intern',ldap.SCOPE_SUBTREE,
    '(objectClass=*)',['cn','mail'])
    
    for dn,entry in result:
        print repr(dn)
    
def main():
    openDirectoryResult()
        
if __name__ == '__main__':
    main()
Antworten