Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)

Einführung

Letztes Mal LDAP hinzugefügt und abgerufen. Dieses Mal werde ich zusammenfassen, wie Sie Writer und Reader hinzufügen und verwenden.

Umgebung

LDAP-Betrieb

LDAP mit Reader lesen

ldap3 hat eine Reader-Klasse mit verschiedenen Funktionen. Verwenden Sie diese Option, um LDAP-Informationen abzurufen. Der Reader benötigt eine Verbindung, ein Objekt und einen cn (Suchpfad). Die Beispiele sind grundsätzlich in der Reihenfolge von oben aufgeführt.

Objekterstellung

Das Objekt wird erstellt, indem der Name des Zielobjekts und die Verbindung an die ObjectDef-Klasse übergeben werden. Dieses Mal möchten wir den Wert von cn annehmen, also geben Sie `` `inetOrgPerson``` an. Wenn Sie möchten, geben Sie das Ziel an, das Sie erhalten möchten, z. B. "organisatorische Einheit".

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

#InetOrgPerson-Objekterstellung
obj_cn_name = ObjectDef('inetOrgPerson', conn)

Lesergenerierung

Erstellen Sie einen Reader, indem Sie das zuvor erstellte Objekt, die Verbindung und den Suchpfad angeben. Über den zu diesem Zeitpunkt angegebenen Suchpfad können Sie angeben, von welcher Hierarchie Informationen abgerufen werden können. Hier wird der Wert nicht eingegeben, da er nicht nur durch Generieren von Reader gesucht wird.

main.py



#Leader-Generation
data_reader = Reader(conn, obj_cn_name, 'ou=sample-unit,dc=sample-component,dc=sample-ldap')

LDAP-Wert abrufen

Rufen Sie eine Liste der LDAP-Werte ab

Sie können eine Liste der LDAP-Werte mit dem Reader `search ()` abrufen.

main.py



#Suche hier
data = data_reader.search()

#Alle Gegenstände können genommen werden
print(data)

Ergebnis


[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
]

Wenn Sie sich das Ergebnis ansehen, können Sie sehen, dass alle im Reader angegebenen cn unter `` `ou = sample-unit, dc = sample-component, dc = sample-ldap``` erfasst wurden. Weiterhin wurden die jeweiligen Attributwerte sn und st erfasst.

Erfassung von Suchdaten nach Attributen

sample-Sie sollten in der Lage sein, den Namen zu erhalten.



#### **`  main.py`**
```py


#Geben Sie die Suchbedingungen an
data = data_reader.search('st')
print(data)

Ergebnis


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

Als ich mir das Ergebnis ansah, bekam ich erwartungsgemäß die cn des Probennamens.

Holen Sie sich im JSON-Format

Es gibt eine Funktion, die durch Konvertieren des LDAP-Werts in eine Zeichenfolge im JSON-Format unter Verwendung des Readers `entry_to_json ()` erhalten werden kann.

main.py



#Kann im JSON-Format bezogen werden
json_str = data[0].entry_to_json()
print(json_str)
print(type(json_str))

Ergebnis


{
    "attributes": {
        "st": [
            "test2"
        ]
    },
    "dn": "cn=sample-name,ou=sample-unit,dc=sample-component,dc=sample-ldap"
}
<class 'str'>

Holen Sie sich im Dict-Format

Es gibt eine Funktion, die den LDAP-Wert in das Dict-Format konvertieren und mithilfe des Readers `` `entry_attributes_as_dict``` abrufen kann.

main.py



ldap_dict = data[0].entry_attributes_as_dict

print(ldap_dict)
print(type(ldap_dict))

Ergebnis


{'st': ['test2']}
<class 'dict'>

Holen Sie sich eine cn mit cn als Pfad

Durch Angabe von cn können Sie nur Informationen für diesen einen cn abrufen.

main.py



#Wenn Sie cn als Pfad verwenden, können Sie nur einen erhalten
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)

Ergebnis


[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
]

Schreiben von LDAP mit Writer

LDAP-Informationen können mithilfe der Writer-Klasse mit verschiedenen Funktionen in ldap3 geschrieben werden. Writer kann mit Reader generiert werden.

Autorengenerierung / Schreiben

Erstellen Sie einen Writer, indem Sie dem Writer `from_cursor ()` einen Reader geben, der den LDAP-Wert erhält. Schreiben Sie den Wert, indem Sie einen Wert in die generierte Writer-Variable einfügen und `commit ()` ausführen.

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

#Verwenden Sie den Reader
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()

#Vor dem Aktualisieren anzeigen
print(data[0])

#Lass den Schriftsteller lesen
data_writer = Writer.from_cursor(data_reader)

#Geben Sie den Wert über den Writer ein
data_writer[0].sn = 'sample10'
data_writer[0].sn += 'sample20'
data_writer[0].st = 'test10'

#Reflexion der Änderungsergebnisse
data_writer.commit()

#Anzeige nach dem Update
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])

Ergebnis


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

Sie können sehen, dass sich die Werte wie angegeben geändert haben.

abschließend

Wir haben die Erfassung / Änderung / Hinzufügung von LDAP mit LDAP Reader und Writer zusammengefasst. Ich bin der Meinung, dass die Verwendung von Reader und Writer die Handhabung von LDAP etwas erleichtert. Dies hat es praktisch gemacht, LDAP anstelle von RDB zu verwenden. Dieses Mal habe ich die Quelle auf solide Weise geschrieben, ohne die Struktur zu berücksichtigen, um sie so einfach wie möglich zu gestalten, aber ich denke, dass die Quelle bequemer wird, wenn ich etwas mehr entwerfe.

Recommended Posts

Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Link, um mit Python zu beginnen
[Python] Mit DataReader Wirtschaftsdaten abrufen
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Erste Schritte mit Python
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Datenpipeline-Aufbau mit Python und Luigi
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Konvertieren Sie Excel-Daten mit Python in JSON
Fraktal zum Erstellen und Spielen mit Python
Komprimieren Sie Python-Daten und schreiben Sie in SQLite
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Ich habe versucht, die statistischen Daten der neuen Corona mit Python abzurufen und zu analysieren: Daten der Johns Hopkins University
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Zubu Amateur will Python starten
Lesen Sie die Daten des NFC-Lesegeräts, das mit Python an Raspberry Pi 3 angeschlossen ist, und senden Sie sie mit OSC an openFrameworks
Python-Skript zum Abrufen von Notizinformationen mit REAPER
Für diejenigen, die Excel VBA lernen und mit Python beginnen möchten
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Datenanalyse mit Python 2
Holen Sie sich ein Date mit Python
Datenanalyse mit Python
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
So kratzen Sie Bilddaten von Flickr mit Python
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Holen Sie sich Finanzdaten mit Python (dann ein wenig basteln)
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Lesehinweis: Einführung in die Datenanalyse mit Python
So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten
Erhalten Sie Kommentare auf Youtube Live mit [Python] und [Pytchat]!
Erhalten Sie E-Mails von Google Mail und beschriften Sie sie mit Python3
Untersuchen Sie den Java- und Python-Datenaustausch mit Apache Arrow
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Abrufen von Daten aus der Datenbank über ODBC mit Python (Access)
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
[CGI] Führen Sie das Server-Python-Programm mit Vue.js + axios aus und rufen Sie die Ausgabedaten ab
Erstellen Sie mit Streamlit schnell ein Python-Datenanalyse-Dashboard und stellen Sie es in AWS bereit
Holen Sie sich den Ländercode mit Python
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Programmieren mit Python und Tkinter
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
Ich möchte Daten mit Python analysieren können (Teil 3)
Ver- und Entschlüsselung mit Python
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Python und Hardware-Verwenden von RS232C mit Python-
Ich habe versucht, mit Python faker verschiedene "Dummy-Daten" zu erstellen