Letztes Mal und Letztes Mal hinzugefügt und LDAP erworben. Dieses Mal werden wir andere Funktionen wie Löschen, Verschieben von Daten und Umbenennen zusammenfassen.
Wenn Sie nur cn ändern möchten, können Sie es mit `modify_dn ()`
von Connection ändern. Nur cn kann geändert werden, indem das dn vor der Änderung und das cn nach der Änderung angegeben werden. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.
main.py
#Vor dem Aktualisieren anzeigen
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_Geben Sie den zu verschiebenden dn und den geänderten cn in dn an
conn.modify_dn('cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap', 'cn=sample-rename')
#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
Ergebnis
[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
]
Wenn Sie sich die LDAP-Werte vor und nach der Änderung ansehen, sehen Sie, dass cn von Beispielname in Beispielumbenennung geändert wurde. Sie können auch sehen, dass die darin enthaltenen Werte so verschoben wurden, wie sie sind.
Das Umbenennen mit Writer kann mit Writer's entry_rename ()
`erfolgen. Geben Sie im Gegensatz zu Connection beim Lesen von Writer den Pfad vor der Änderung an und geben Sie den Namen nach der Änderung mit dem vollständigen Pfad an entry_rename () an.
main.py
#Vor dem Aktualisieren anzeigen
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('=======================')
#Laden Sie das Verschiebungsziel in 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)
#Geben Sie den vollständigen Pfad nach der Änderung an
data_writer[0].entry_rename('cn=sample-rename,ou=sample-unit,dc=sample-component,dc=sample-ldap')
#Reflexion der Änderungsergebnisse
data_writer.commit()
#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
Ergebnis
[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
]
Wenn Sie sich die LDAP-Werte vor und nach der Änderung ansehen, sehen Sie, dass der cn von Beispielname in Beispielumbenennung geändert wurde und die darin enthaltenen Werte ähnlich wie bei der Verbindungsänderung so verschoben wurden, wie sie sind.
Wenn Sie die Entität in einen anderen Pfad verschieben möchten, können Sie sie wie oben beschrieben mit `modify_dn ()`
von Connection ändern. Sie können eine Entität verschieben, indem Sie den zu verschiebenden dn, den cn nach der Änderung und den dn nach der Änderung angeben. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.
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()
#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#Ziehen um
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')
#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
Ergebnis
[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
]
Sie können sehen, dass Sie mit cn Sample-Name von Sample-Unit zu Sample-Unit-Move verschoben haben. Darüber hinaus wurden die darin enthaltenen Attribute wie zuvor zusammen verschoben.
Sie können die Bewegung von Entitäten mit Writer mithilfe von Writer's entry_move ()
`ändern. Geben Sie wie bei "entry_rename ()" den Pfad vor der Änderung an, wenn Sie den Writer lesen, und geben Sie den Pfad nach der Änderung in "entry_move ()" als vollständigen Pfad an. Bitte beachten Sie hier, dass der Name der verschobenen Entität nicht im Pfad enthalten sein darf und nicht in einen nicht vorhandenen Pfad verschoben werden kann.
main.py
#Vor dem Aktualisieren anzeigen
obj_cn_name = ObjectDef('inetOrgPerson', conn)
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader.search())
print('=======================')
#Laden Sie das Verschiebungsziel in 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)
#Wert verschieben
data_writer[0].entry_move('cn=sample-name,ou=sample-unit-move,dc=sample-component,dc=sample-ldap')
#Reflexion der Änderungsergebnisse
data_writer.commit()
#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
Ergebnis
[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
]
Sie können sehen, dass Sie mit cn Sample-Name von Sample-Unit zu Sample-Unit-Move verschoben haben. Darüber hinaus wurden die darin enthaltenen Attribute wie zuvor zusammen verschoben.
Wenn Sie eine Entität löschen möchten, verwenden Sie `delete ()`
von Connection. Sie können es löschen, indem Sie für diese Funktion dn angeben. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.
main.py
#Vor dem Löschen anzeigen
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)
print('=======================')
#Löschen Sie durch Angabe des Pfads
ou_result = conn.delete('cn=sample-name2,ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(ou_result)
#Nach dem Löschen anzeigen
conn.search('ou=sample-unit,dc=sample-component,dc=sample-ldap', '(objectclass=inetOrgPerson)')
print(conn.entries)
Ergebnis
[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
]
Sie können sehen, dass der cn von sample2 nach dem Löschen verschwindet.
Sie können auch alle löschen, indem Sie sie mit der Erfassung kombinieren.
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)
Wenn Sie eine Entität löschen möchten, verwenden Sie Writer's entry_delete ()
. Rufen Sie nach dem Erstellen des Writers einfach die Entität ``
entry_delete ()` `` auf, genau wie bei einer früheren Writer-Operation. Da das folgende Beispiel im vorherigen Artikel zusammengefasst wurde, ist die Verbindungsverbindung unterbrochen.
main.py
#Vor dem Aktualisieren anzeigen
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('=======================')
#Laden Sie das Verschiebungsziel in 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)
#Löschen Sie den Wert
data_writer[0].entry_delete()
data_writer.commit()
#Anzeige nach dem Update
data_reader2 = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')
print(data_reader2.search())
Ergebnis
[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
]
Wenn Sie sich das Ergebnis nach dem Löschen ansehen, sehen Sie, dass der cn des Beispielnamens weg ist.
Sie können auch alle löschen, indem Sie die Suchbedingungen ändern
main.py
#Lassen Sie Writer den oberen Pfad lesen
data_reader = Reader(conn, obj_cn_name, 'dc=sample-component,dc=sample-ldap')
data_reader.search()
data_writer = Writer.from_cursor(data_reader)
#Löschen Sie alle Werte
for data_entity in data_writer:
data_entity.entry_delete()
Wir konnten die für den Betrieb von LDAP erforderlichen Ergänzungen, Suchen, Löschungen und Änderungen zusammenfassen. Darüber hinaus sind einige Verzeichnisoperationen eindeutig, z. B. Verschiebungen und Umbenennungen, über die RDB nicht verfügt. Selbst wenn es die Funktion hat, Daten auf die gleiche Weise zu speichern, dachte ich, dass es bequemer wäre, wenn RDB und LDAP richtig verwendet werden, da es deutliche Unterschiede gibt.
Recommended Posts