[PYTHON] récupérer données

récupérer données [PYTHON] - Python - Programmation

Marsh Posté le 07-06-2021 à 20:12:53    

Bonjour,
 
J'ai utilisé python pour me connecter à un annuaire LDAP.
source : https://dev.tranquil.it/samba/fr/do [...] samdb.html
 
Je rencontre un problème pour extraire certaine données d'une requête python.
Je voudrais récupérer dans l'object 'memberOf', le nom des groupes dans une liste. Dans cet exemple 'groupe1' et 'groupe2'. Sortie souhaité => [groupe1,groupe2].  
 
Je voudrais que cela soit adaptatif au nombre de groupe que l'utilisateur est intégré (de 1 à X groupes).
 
Code (Requête python) :
 
query = ("(sAMAccountName=user1)" )
result = samdb.search(domain_controller, expression=query, scope=ldb.SCOPE_SUBTREE)
dn = str(result[0])
print(dn)

 
Résultat :
 
Message({'dn': Dn('CN=user1,OU=People,DC=test,DC=lan'), 'objectClass': MessageElement([b'top',b'person',b'organizationalPerson',b'user']), 'cn': MessageElement([b'user1']), 'givenName': MessageElement([b'user1']), 'instanceType': MessageElement([b'4']), 'whenCreated': MessageElement([b'20210607145707.0Z']), 'displayName': MessageElement([b'user1']), 'uSNCreated': MessageElement([b'55885']), 'name': MessageElement([b'user1']), 'objectGUID': MessageElement([b'\x1c\xc0\xcf\x8e\x9e\xbf\x9aH\x8cg8\xa7\xa5c\x98R']), 'badPwdCount': MessageElement([b'0']), 'codePage': MessageElement([b'0']), 'countryCode': MessageElement([b'0']), 'badPasswordTime': MessageElement([b'0']), 'lastLogoff': MessageElement([b'0']), 'lastLogon': MessageElement([b'0']), 'primaryGroupID': MessageElement([b'513']), 'objectSid': MessageElement([b'\x01\x05\x00\x00\x00\x00\x00\x05\x15\x00\x00\x00\xcc\xac<\x1f\xb6?\xfd\xbe|\x8a\x16\xf5r!\x00\x00']), 'accountExpires': MessageElement([b'9223372036854775807']), 'logonCount': MessageElement([b'0']), 'sAMAccountName': MessageElement([b'user1']), 'sAMAccountType': MessageElement([b'805306368']), 'userPrincipalName': MessageElement([b'user1@test-test.com']), 'objectCategory': MessageElement([b'CN=Person,CN=Schema,CN=Configuration,DC=test,DC=lan']), 'pwdLastSet': MessageElement([b'132675514278088410']), 'userAccountControl': MessageElement([b'66048']), 'memberOf': MessageElement([b'CN=groupe1,OU=groupe1,OU=Agences,DC=test,DC=lan',b'CN=groupe2,OU=groupe2,OU=Agences,DC=test,DC=lan']), 'lastLogonTimestamp': MessageElement([b'132675515241036090']), 'whenChanged': MessageElement([b'20210607145844.0Z']), 'uSNChanged': MessageElement([b'55898']), 'distinguishedName': MessageElement([b'CN=user1,OU=People,DC=test,DC=lan'])})

Message cité 1 fois
Message édité par paresseux91 le 07-06-2021 à 20:23:36
Reply

Marsh Posté le 07-06-2021 à 20:12:53   

Reply

Marsh Posté le 07-06-2021 à 20:22:27    

paresseux91 a écrit :

Bonjour,
 
J'ai utilisé python pour me connecter à un annuaire LDAP.
 
Je rencontre un problème pour extraire certaine données d'une requête python.
Je voudrais récupérer dans l'object 'memberOf', le nom des groupes dans une liste. Dans cet exemple 'groupe1' et 'groupe2'. Sortie souhaité => [groupe1,groupe2].  
 
Je voudrais que cela soit adaptatif au nombre de groupe que l'utilisateur est intégré (de 1 à X groupes).
 
Code (Requête python) :
 
query = ("(sAMAccountName=user1)" )
result = samdb.search(domain_controller, expression=query, scope=ldb.SCOPE_SUBTREE)
dn = str(result[0])
print(dn)

 
Résultat :
 
Message({'dn': Dn('CN=user1,OU=People,DC=test,DC=lan'), 'objectClass': MessageElement([b'top',b'person',b'organizationalPerson',b'user']), 'cn': MessageElement([b'user1']), 'givenName': MessageElement([b'user1']), 'instanceType': MessageElement([b'4']), 'whenCreated': MessageElement([b'20210607145707.0Z']), 'displayName': MessageElement([b'user1']), 'uSNCreated': MessageElement([b'55885']), 'name': MessageElement([b'user1']), 'objectGUID': MessageElement([b'\x1c\xc0\xcf\x8e\x9e\xbf\x9aH\x8cg8\xa7\xa5c\x98R']), 'badPwdCount': MessageElement([b'0']), 'codePage': MessageElement([b'0']), 'countryCode': MessageElement([b'0']), 'badPasswordTime': MessageElement([b'0']), 'lastLogoff': MessageElement([b'0']), 'lastLogon': MessageElement([b'0']), 'primaryGroupID': MessageElement([b'513']), 'objectSid': MessageElement([b'\x01\x05\x00\x00\x00\x00\x00\x05\x15\x00\x00\x00\xcc\xac<\x1f\xb6?\xfd\xbe|\x8a\x16\xf5r!\x00\x00']), 'accountExpires': MessageElement([b'9223372036854775807']), 'logonCount': MessageElement([b'0']), 'sAMAccountName': MessageElement([b'user1']), 'sAMAccountType': MessageElement([b'805306368']), 'userPrincipalName': MessageElement([b'user1@test-test.com']), 'objectCategory': MessageElement([b'CN=Person,CN=Schema,CN=Configuration,DC=test,DC=lan']), 'pwdLastSet': MessageElement([b'132675514278088410']), 'userAccountControl': MessageElement([b'66048']), 'memberOf': MessageElement([b'CN=groupe1,OU=groupe1,OU=Agences,DC=test,DC=lan',b'CN=groupe2,OU=groupe2,OU=Agences,DC=test,DC=lan']), 'lastLogonTimestamp': MessageElement([b'132675515241036090']), 'whenChanged': MessageElement([b'20210607145844.0Z']), 'uSNChanged': MessageElement([b'55898']), 'distinguishedName': MessageElement([b'CN=user1,OU=People,DC=test,DC=lan'])})


 
Avec ce code je me suis rapproché du résultat, mais il ne marche pas si l'utilisateur est intègres dans plusieurs groupes :
 
Dans cette exemple l'utilisateur "user2" est uniquement dans le "groupe2"
 
Code :
 
query = ("(sAMAccountName=user2)" )
result = samdb.search(domain_controller, expression=query, scope=ldb.SCOPE_SUBTREE)
dn = str(result[0]['memberOf'])
print(dn)

 
Résultat :
 
CN=groupe2,OU=groupe2,OU=Agences,DC=test,DC=lan


Message édité par paresseux91 le 07-06-2021 à 20:27:32
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed