python -ldap Изменить номер телефона - PullRequest
1 голос
/ 23 февраля 2020

Я хотел бы изменить номера мобильных телефонов в AD с помощью скрипта python (- ldap).

Это код, который я пытался использовать:

# import needed modules
import ldap
import ldap.modlist as modlist

# Open a connection
l = ldap.initialize("ldap://host/",trace_level=3)

# Bind/authenticate with a user with apropriate rights to add objects
l.simple_bind_s("user@domain","pw")

# The dn of our existing entry/object
dn="CN=common name,OU=Users,OU=x,DC=y,DC=z,DC=e"

# Some place-holders for old and new values
name = 'mobile'
nr1 = '+4712781271232'
nr2 = '+9812391282822'

old = {name:nr1}
new = {name:nr2}

# Convert place-holders for modify-operation using modlist-module
ldif = modlist.modifyModlist(old,new)

# Do the actual modification
l.modify_s(dn, ldif)

# Its nice to the server to disconnect and free resources when done
l.unbind_s()

К сожалению, я получаю следующую ошибку:

ldap.UNWILLING_TO_PERFORM: {'info': u '00000057: LdapErr: DSID-0C090FC7, комментарий: ошибка в операции преобразования атрибута, данные 0, v4563', 'des c': сервер u не хочет выполнять '}

Я возможность удалить запись, оставив старый пустой, но когда я пытаюсь установить его, я получаю следующее:

LDAPError - TYPE_OR_VALUE_EXISTS: {'info': u'00002083: AtrErr: DSID-031519F7 , # 5: \ n \ t0: 00002083: DSID-031519F7, проблема 1006 (ATT_OR_VALUE_EXISTS), данные 0, Att 150029 (мобильный): len 2 \ n \ t1: 00002083: DSID-031519F7, проблема 1006 (ATT_OR_VALUE_EXISTS), данные 0, Att 150029 (мобильный): len 2 \ n \ t2: 00002083: DSID-031519F7, проблема 1006 (ATT_OR_VALUE_EXISTS), данные 0, Att 150029 (мобильный): len 2 \ n \ t3: 00002083: DSID-031519F7, проблема 1006 (ATT_OR_VALUE_EXISTS), данные 0, Att 150029 (мобильный): len 2 \ n \ t4: 00002083: DSID-031519F7, проблема 1006 (ATT_OR_VALUE_EXISTS), данные 0, Att 150029 (мобильный): len 2 \ n ',' des c ': u'Тип или значение существует'}

С помощью инструмента командной строки ldapmodify я смог сделать эти два:

dn:CN=common name,OU=Users,OU=x,DC=y,DC=z,DC=e
changetype: modify
add: mobile
mobile: +1 2345 6789

dn:CN=common name,OU=Users,OU=x,DC=y,DC=z,DC=e
changetype: modify
delete: mobile
mobile: +1 2345 6789

Но не в состоянии это сделать:

dn:CN=common name,OU=Users,OU=x,DC=y,DC=z,DC=e
changetype: modify
replace: mobile
mobile: +1 2345 6789
mobile: +4 567 89012345

Следующая ошибка:

ldap_modify: нарушение ограничения (19) дополнительная информация: 00002081 : AtrErr: DSID-03151907, # 1: 0: 00002081: DSID-03151907, проблема 1005 (CONSTRAINT_ATT_TYPE), данные 0, Att 150029 (мобильный)

пытались некоторое время и действительно признателен за помощь.

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

Не берите в голову вопрос. Заменено:

nr1 = '+4712781271232'
nr2 = '+9812391282822'

old = {name:nr1}
new = {name:nr2}

На:

old = {'mobile':["+4712781271232"]}
new = {'mobile':["+9812391282822"]}

Кронштейны делают свое дело;)

0 голосов
/ 24 февраля 2020

Кроме того, я думал, что мобильный атрибут мог быть определен как тип с одним значением, а не как несколько. но рад, что вы нашли синтаксическую ошибку!

...