Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)

introduction

Dernière fois ajouté et récupéré LDAP. Cette fois, je vais résumer comment ajouter et utiliser Writer et Reader.

environnement

Opération LDAP

Lecture de LDAP à l'aide de 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.

Création d'objets

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)

Génération de lecteurs

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')

Obtenez la valeur LDAP

Obtenir une liste de valeurs 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.

Acquisition des données de recherche par attribut

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.

Obtenez au format json

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'>

Obtenez au format Dict

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'>

Obtenez un cn avec cn comme chemin

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
]

Ecrire LDAP à l'aide de Writer

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.

Génération / écriture d'écrivains

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é.

en conclusion

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

Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Obtenez des données supplémentaires vers LDAP avec python
J'ai essayé d'obtenir des données CloudWatch avec Python
Lien pour commencer avec python
[Python] Obtenez des données économiques avec DataReader
Débarrassez-vous des données sales avec Python et les expressions régulières
Comment démarrer avec Python
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
Construction de pipeline de données avec Python et Luigi
[Note] Obtenir des données de PostgreSQL avec Python
Convertir des données Excel en JSON avec python
Fractal pour faire et jouer avec Python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Compressez les données python et écrivez sur sqlite
Comment obtenir la différence de date et d'heure en secondes avec Python
Grattage de la nourriture avec python et sortie en CSV
MessagePack-Try pour lier Java et Python avec RPC
Obtenez des données sur le cours de l'action avec l'API Quandl [Python]
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Obtenez l'objet et le corps de Gmail avec Python et l'API Gmail
Zubu amateur veut démarrer Python
Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC
Script Python pour obtenir des informations de note avec REAPER
Pour ceux qui veulent apprendre Excel VBA et se lancer avec Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Analyse de données avec python 2
Obtenez date avec python
Analyse de données avec Python
Obtenez des images et des vidéos de la chronologie des médias avec Python + Tweepy
Comment récupérer des données d'image de Flickr avec Python
Je veux gérer l'optimisation avec python et cplex
J'ai essayé de démarrer avec le script python de blender_Part 01
Obtenez des données financières avec python (puis un peu de bricolage)
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Note de lecture: Introduction à l'analyse de données avec Python
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Obtenez des commentaires sur youtube Live avec [python] et [pytchat]!
Recevoir des e-mails de Gmail et étiqueter avec Python3
Étudiez l'échange de données Java et Python avec Apache Arrow
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
Obtenir des données de la base de données via ODBC avec Python (Access)
Obtenez une grande quantité de données Twitter de Starba avec python et essayez l'analyse de données Partie 1
[CGI] Exécutez le programme Python du serveur avec Vue.js + axios et obtenez les données de sortie
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
Obtenez le code du pays avec python
API Nifty Cloud facile à utiliser avec botocore et python
Programmation avec Python et Tkinter
[Introduction à cx_Oracle] (Partie 6) Mappage des types de données DB et Python
Je veux pouvoir analyser des données avec Python (partie 3)
Chiffrement et déchiffrement avec Python
écran et écran partagé avec connexion python et ssh au serveur distant
Python et matériel - Utilisation de RS232C avec Python -
J'ai essayé de créer diverses "données factices" avec Python faker