Dernière fois ajouté et récupéré LDAP. Cette fois, je vais résumer comment ajouter et utiliser Writer et Reader.
ldap3 a une classe Reader avec diverses fonctions. Utilisez-le pour obtenir des informations LDAP. Reader nécessite une connexion, un objet et un cn (chemin de recherche). Les exemples sont essentiellement répertoriés dans l'ordre du haut.
L'objet est créé en passant le nom de l'objet cible et la connexion à la classe ObjectDef. Cette fois, nous voulons prendre la valeur de cn, alors spécifiez inetOrgPerson
. Lorsque vous voulez obtenir ou, spécifiez la cible que vous voulez obtenir, telle que organizationalUnit
.
main.py
from ldap3 import Server, Connection, ObjectDef, Reader
server = Server('localhost')
conn = Connection(server, 'cn=admin,dc=sample-ldap', password='LdapPass')
result = conn.bind()
#Création d'objet InetOrgPerson
obj_cn_name = ObjectDef('inetOrgPerson', conn)
Créez un lecteur en indiquant l'objet, la connexion et le chemin de recherche créés précédemment. Le chemin de recherche donné à ce moment vous permet de spécifier de quelle hiérarchie les informations peuvent être obtenues. Ici, la valeur n'est pas saisie car elle n'est pas recherchée uniquement en générant Reader.
main.py
#Génération de leaders
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
Vous pouvez obtenir une liste de valeurs LDAP en utilisant le lecteur `` search () ''.
main.py
#Cherche ici
data = data_reader.search()
#Tous les articles peuvent être pris
print(data)
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T20:50:15.470086
cn: sample-name
objectClass: inetOrgPerson
sn: sample1
sample2
st: test2
, DN: cn=sample-name1,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T20:50:15.478084
cn: sample-name1
objectClass: inetOrgPerson
sn: sample
]
En regardant le résultat, vous pouvez voir que tous les cn sous ou = sample-unit, dc = sample-component, dc = sample-ldap
spécifiés dans Reader ont été acquis. En outre, les valeurs d'attribut respectives sn et st ont été acquises.
sample-Vous devriez pouvoir obtenir le nom.
#### **` main.py`**
```py
#Spécifiez les conditions de recherche
data = data_reader.search('st')
print(data)
résultat
DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T20:50:15.470086
cn: sample-name
objectClass: inetOrgPerson
sn: sample1
sample2
st: test2
En regardant le résultat, j'ai obtenu le cn de sample-name comme prévu.
Il existe une fonction qui peut être obtenue en convertissant la valeur LDAP en une chaîne de caractères au format json en utilisant le lecteur ```entry_to_json () `` `.
main.py
#Peut être obtenu au format json
json_str = data[0].entry_to_json()
print(json_str)
print(type(json_str))
résultat
{
"attributes": {
"st": [
"test2"
]
},
"dn": "cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap"
}
<class 'str'>
Il existe une fonction qui peut être obtenue en convertissant la valeur LDAP au format Dict en utilisant le lecteur entry_attributes_as_dict
.
main.py
ldap_dict = data[0].entry_attributes_as_dict
print(ldap_dict)
print(type(ldap_dict))
résultat
{'st': ['test2']}
<class 'dict'>
En spécifiant cn, vous ne pouvez obtenir des informations que pour ce cn.
main.py
#Si vous utilisez cn comme chemin, vous ne pouvez en obtenir qu'un
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data = data_reader.search()
print(data)
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T21:16:17.284094
cn: sample-name
objectClass: inetOrgPerson
sn: sample1
sample2
st: test2
]
Les informations LDAP peuvent être écrites dans ldap3 à l'aide de la classe Writer avec diverses fonctions. Writer peut être généré à l'aide de Reader.
Créez un Writer en donnant au Writer from_cursor () '' un Reader qui obtient la valeur LDAP. Écrivez la valeur en mettant une valeur dans la variable Writer générée et en faisant
commit () ''.
main.py
from ldap3 import Server, Connection, ObjectDef, Reader, Writer
server = Server('localhost')
conn = Connection(server, 'cn=admin,dc=sample-ldap', password='LdapPass')
result = conn.bind()
#Utiliser le lecteur
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data = data_reader.search()
#Afficher avant la mise à jour
print(data[0])
#Laisser l'écrivain lire
data_writer = Writer.from_cursor(data_reader)
#Entrez la valeur via l'écrivain
data_writer[0].sn = 'sample10'
data_writer[0].sn += 'sample20'
data_writer[0].st = 'test10'
#Reflet des résultats du changement
data_writer.commit()
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data2 = data_reader2.search()
print(data2[0])
résultat
DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T21:36:03.493031
cn: sample-name
objectClass: inetOrgPerson
sn: sample1
sample2
st: test1
DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-27T21:36:03.686030
cn: sample-name
objectClass: inetOrgPerson
sn: sample10
sample20
st: test10
Vous pouvez voir que les valeurs ont changé comme spécifié.
Nous avons résumé l'acquisition / la modification / l'ajout de LDAP à l'aide de LDAP Reader and Writer. Je pense que l'utilisation de Reader and Writer facilite un peu la gestion de LDAP. Cela a rendu pratique l'utilisation de LDAP au lieu de RDB. Cette fois, afin de rendre les choses aussi simples que possible, j'ai écrit la source de manière solide sans considérer la structure, mais je pense que la source deviendra plus pratique si je pense un peu plus.
Recommended Posts