Dernière fois et Dernière fois ont ajouté et acquis LDAP. Cette fois, nous résumerons d'autres fonctions telles que la suppression, le déplacement des données et le changement de nom.
Si vous ne souhaitez modifier que cn, vous pouvez le modifier en utilisant `` modify_dn () '' de Connection. Seul cn peut être modifié en spécifiant le dn avant le changement et le cn après le changement. Étant donné que l'exemple suivant a été résumé dans l'article précédent, la connexion de connexion est interrompue.
main.py
#Afficher avant la mise à jour
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
# modify_Spécifiez le dn à déplacer et le cn modifié dans dn
conn.modify_dn('cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap', 'cn=sample-rename')
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:24:03.368406
cn: sample-name
objectClass: inetOrgPerson
sn: sample
]
=======================
[DN: cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:24:03.448482
cn: sample-rename
objectClass: inetOrgPerson
sn: sample
]
En regardant les valeurs LDAP avant et après la modification, vous pouvez voir que cn a été changé de nom-échantillon en nom-échantillon. Vous pouvez également voir que les valeurs à l'intérieur ont été déplacées telles quelles.
Renommer à l'aide de Writer peut être fait en utilisant entry_rename () `` `de Writer. Contrairement à Connection, spécifiez le chemin avant le changement lors de la lecture de Writer, et donnez le nom après le changement à
entry_rename () `` `avec le chemin complet.
main.py
#Afficher avant la mise à jour
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#Charger la cible de déplacement dans Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)
#Spécifiez le chemin complet après la modification
data_writer[0].entry_rename('cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap')
#Reflet des résultats du changement
data_writer.commit()
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:40:09.898199
cn: sample-name
objectClass: inetOrgPerson
sn: sample
]
=======================
[DN: cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T19:40:10.017186
cn: sample-rename
objectClass: inetOrgPerson
sn: sample
]
En examinant les valeurs LDAP avant et après la modification, vous pouvez voir que cn a été changé de nom-échantillon à échantillon-renommer et que les valeurs à l'intérieur ont été déplacées telles quelles, comme le changement de connexion.
Si vous souhaitez déplacer l'entité vers un autre chemin, vous pouvez le modifier en utilisant `` modify_dn () '' de Connection comme ci-dessus. Vous pouvez déplacer une entité en spécifiant le dn à déplacer, le cn après la modification et le dn après la modification. Étant donné que l'exemple suivant a été résumé dans l'article précédent, la connexion de connexion est interrompue.
main.py
from ldap3 import Server, Connection, ObjectDef, Reader, Writer
server = Server('localhost')
conn = Connection(server, 'cn=admin,dc=sample-ldap', password='LdapPass')
conn.bind()
#Afficher avant la mise à jour
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#En mouvement
conn.modify_dn('cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap', 'cn=sample-name', new_superior='ou=sample-unit-move,dc=sample-component,dc=sample-ldap')
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.190680
cn: sample-name
objectClass: inetOrgPerson
sn: test
st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.194679
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
=======================
[DN: cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.233686
cn: sample-name
objectClass: inetOrgPerson
sn: test
st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:01:02.236675
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
Vous pouvez voir que ou avec cn is sample-name est passé de sample-unit à sample-unit-move. De plus, les attributs à l'intérieur ont été déplacés ensemble comme auparavant.
Le déplacement d'entités à l'aide de Writer peut être modifié en utilisant entry_move () `` `de Writer. De la même manière que
entry_rename () `, spécifiez le chemin avant le changement lors de la lecture de Writer, et donnez le chemin après le changement à` `ʻentry_move ()`
comme chemin complet. Veuillez noter ici que le nom de l'entité déplacée ne doit pas figurer dans le chemin et ne peut pas être déplacé vers un chemin qui n'existe pas.
main.py
#Afficher avant la mise à jour
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#Charger la cible de déplacement dans Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)
#Déplacer la valeur
data_writer[0].entry_move('cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap')
#Reflet des résultats du changement
data_writer.commit()
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:33.946805
cn: sample-name
objectClass: inetOrgPerson
sn: test
st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:33.952774
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
=======================
[DN: cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:34.045188
cn: sample-name
objectClass: inetOrgPerson
sn: test
st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:08:34.051225
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
Vous pouvez voir que ou avec cn is sample-name est passé de sample-unit à sample-unit-move. De plus, les attributs à l'intérieur ont été déplacés ensemble comme auparavant.
Si vous souhaitez supprimer une entité, utilisez `` delete () '' de Connection. Vous pouvez le supprimer en spécifiant dn pour cette fonction. Étant donné que l'exemple suivant a été résumé dans l'article précédent, la connexion de connexion est interrompue.
main.py
#Afficher avant suppression
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)
print('=======================')
#Supprimer en spécifiant le chemin
ou_result = conn.delete('cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(ou_result)
#Affichage après suppression
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.281937
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.281937
]
=======================
True
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:19:59.322233
]
Vous pouvez voir que le cn de sample2 disparaît après la suppression.
Vous pouvez également tout supprimer en combinant avec l'acquisition.
main.py
conn.search('dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
for entry in conn.entries:
del_result = conn.delete(entry.entry_dn)
print(del_result)
Si vous voulez supprimer une entité, utilisez entry_delete () `` `de Writer. Appelez simplement l'entité
entry_delete () `` `après avoir créé le Writer, comme vous le feriez avec une opération Writer précédente. L'exemple suivant est résumé dans l'article précédent, de sorte que la connexion de connexion est interrompue.
main.py
#Afficher avant la mise à jour
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#Charger la cible de déplacement dans Writer
data_reader = Reader(conn, obj_cn_name, 'cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)
#Supprimer la valeur
data_writer[0].entry_delete()
data_writer.commit()
#Affichage après mise à jour
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
résultat
[DN: cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.155112
cn: sample-name
objectClass: inetOrgPerson
sn: test
st: sample
, DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.160111
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
=======================
[DN: cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap - STATUS: Read - READ TIME: 2020-03-29T20:30:26.264725
cn: sample-name2
objectClass: inetOrgPerson
sn: test
st: sample
]
En regardant le résultat après la suppression, vous pouvez voir que le cn de sample-name a disparu.
Vous pouvez également tout supprimer en modifiant les conditions de recherche
main.py
#Demandez à Writer de lire le chemin supérieur
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)
#Supprimer toutes les valeurs
for data_entity in data_writer:
data_entity.entry_delete()
Nous avons pu résumer les ajouts, les recherches, les suppressions et les modifications nécessaires pour faire fonctionner LDAP. De plus, certaines opérations de répertoire sont uniques, telles que les déplacements et les renommages que RDB n'a pas. Même s'il a la fonction de sauvegarder les données de la même manière, j'ai pensé qu'il serait plus pratique que RDB et LDAP soient utilisés correctement car il y a des différences claires.
Recommended Posts