Der Versuch, ein ldap-Attribut mit mehreren Werten zu ändern, scheint die Syntax nicht zu verstehen.ldap3-Bibliothek: Attribut mit mehreren Werten ändern
Ich verwende die ldap3 Bibliothek mit Python3.
Die documentation gibt ein Beispiel, das zwei Attribute eines Eintrags modifiziert - aber jedes Attribut nur eine Wert hat.
Das Wörterbuch aus diesem Beispiel ist das Bit ich Probleme mit, die ich:
c.modify('cn=user1,ou=users,o=company',
{'givenName': [(MODIFY_REPLACE, [<what do I put here>])]})
Statt ‚given‘, die einen Wert haben würde, ich möchte das memberUid Attribut ändern, die offensichtlich viele Namen haben würde als Einträge.
Also spucke ich alle meine Mitglieder in eine Liste, mache die Änderung, und versuche dann, meine neue Benutzernamen/Mitgliedsliste dem MODIFY-Befehl zu füttern. Wie so:
oldval = 'super.man'
newval = 'clark.kent'
existingmembers = ['super.man', 'the.hulk', 'bat.man']
newmemberlist = [newval if x==oldval else x for x in existingmembers]
# newmemberlist = ", ".join(str(x) for x in newmemberlist)
habe ich versucht, als eine Liste in newmemberlist vorbei
'memberuid': [(MODIFY_REPLACE, ['clark.kent', 'the.hulk','bat.man'])]
die mich TypeError: 'str' object cannot be interpreted as an integer
oder verschiedene Kombinationen (die Kommentarzeile) einer langen Reihe gibt, getrennt mit Leerzeichen, Komma, Semikolon und alles, was mir sonst noch einfällt
'memberuid': [(MODIFY_REPLACE, 'clark.kent, the.hulk, bat.man')]
, die das ersetzen wird, aber ich erhalte ein memberUid wie diese 'clark.kent, the.hulk, bat.man'
Meine Liste Beispiel verpasst die DN (Tippfehler). Ich habe meine Frage entsprechend bearbeitet. Ich habe keine Probleme, einen MODIFY REPLACE zu tun, wenn es einen Wert gibt - aber das Übergeben einer Liste, um Multi-Werte zu erhalten (wie Sie sagten) gibt den Fehler, den ich zeigte. –