IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

LDAP SEARCH (Extraire de l'information)


Sujet :

Réseau/Web Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut LDAP SEARCH (Extraire de l'information)
    Bonjour tous le monde
    j'ai crée un code qui fonctionne bien et qui me permet de m’authentifier sur un serveur AD, et me retourner les infos de l'utilisateur authentifier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    import ldap
    import getpass
     
    # get login info
     
    username = raw_input("Enter your username: ")
    password = getpass.getpass("Enter your password: ")
     
    ldap_server = "ldap://zirgus.localdomaine.com"
    base_dn = "DC=localdomaine,DC=com"
    user_dn = username + "@localdomaine.com"
    search_filter = "(&(objectClass=*)(sAMAccountName=" + username + "))"
     
    ld = ldap.initialize(ldap_server);
    #ld = ldap.open(ldap_server)
    ld.protocol_version = 3
    ld.set_option(ldap.OPT_REFERRALS, 0)
     
    # bind user information to ldap connection
     
    try:
        print ld.simple_bind_s(user_dn, password)
        msgid = ld.search(base_dn, ldap.SCOPE_SUBTREE, search_filter,["cn"])
        actual_result = ld.result(msgid)
    #   print msgid
        print actual_result
        ld.unbind_s()
    except ldap.INVALID_CREDENTIALS:
        print "Your username or password is invalid."
    except Exception as e:
        print("Connection unsuccessful: " + str(e.message))
        ld.unbind_s()
    mais mon problème maintenant c'est comment extraire les informations qui ne sont pas organisée (CN, mail...)

    résultat de la requête search:

    (101, [("CN=Abdou ISMAILI,OU=Users,OU=Infrastructure,OU=Syst\xc3\xa8mes d'Information Et organisation,DC=localdomaine,DC=com", {'cn': ['Abdou ISMAILI']}), (None, ['ldap://DomainDnsZones.localdomaine.com/DC=DomainDnsZones,DC=localdomaine,DC=com']), (None, ['ldap://ForestDnsZones.localdomaine.com/DC=ForestDnsZones,DC=localdomaine,DC=com']), (None, ['ldap://localdomaine.com/CN=Configuration,DC=localdomaine,DC=com'])])
    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Salut,

    Ce que retourne LDAP est une structure "composite", i.e. un tuple composé d'un entier et d'une liste composée de... dans laquelle il va falloir naviguer. Et comme list, tuple, dictionnaires, chaînes de caractères,... sont des structures de bases du langage, pas facile de comprendre ce qui vous bloque.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    Merci wiztricks,

    ce que je veux, c'est exactement ce que cette fonction fait, m'afficher juste l’attribut que je veux et non pas toutes la structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>>d = dict(item.split("=") for item in result[0].split(","))
    >>>print d['CN']
    cette fonction me retourne cette erreur :
    Connection unsuccessful: 'int' object has no attribute 'split'
    avez vous une idée.
    merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 235
    Points : 36 684
    Points
    36 684
    Par défaut
    Si la variable "result" correspond à la structure de donnée postée dans le premier message.
    result[0] étant un entier et Python ne peut que planter avec l'erreur 'int' object has no attribute 'split'.

    Citation Envoyé par AI_LINUX Voir le message
    ce que je veux, c'est exactement ce que cette fonction fait, m'afficher juste l’attribut que je veux et non pas toutes la structure :
    Pour çà, il faut appliquer votre for item in ... à la chaîne de caractères qui va bien en l'ayant extrait de ce que vous a retourné LDAP (i.e. savoir naviguer dans une séquence...)
    Ce sont des bases de la programmation que vous apprenez avec n'importe quel tuto...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 100
    Points : 36
    Points
    36
    Par défaut
    Merci wiztricks,
    c'est vrai c'est des bases de programmation.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire de l'information de régions segmentées
    Par physicist dans le forum OpenCV
    Réponses: 1
    Dernier message: 16/02/2012, 20h18
  2. [Débutant] LDAP + search.Filter multiple sAMAccountName
    Par JonathanMQ dans le forum C#
    Réponses: 3
    Dernier message: 09/11/2011, 17h34
  3. [PHP 5.3] LDAP search avec un AD
    Par jejeman dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2011, 17h38
  4. LDAP search : le contenu d'une OU
    Par jroux dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 23/11/2010, 23h45
  5. Réponses: 4
    Dernier message: 19/01/2008, 03h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo