2017-06-28 2 views
0

私は実行中のディレクトリがあり、ユーザーの属性を変更したいと考えています。 Imはpython3 ldap3ライブラリとmodify()メソッドを使っています。 以下のコードは、ユーザーを変更しようとするたびに例外を発生させます。私は、ユーザー(オブジェクト)の属性 "distinguishedNameの" をチェックして、その値が「CN =フィリップ石、OU =ファイアウォール、DC =ドメイン、DCであるADのGUIでldap3/python3アクティブなディレクトリでmodify()関数エラー(不正な変更)が発生しました

from ldap3 import Server, Connection, MODIFY_REPLACE 

server = Server('ldaps://domain.local:636', port = 636, use_ssl = True) 
try: 
    conn = Connection(server, user="[email protected]", password="MYPW", auto_bind=True) 
    print("User found") 
except: 
    print("User not found or connection error") 


result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': [(MODIFY_REPLACE, ['replaced-text'])]}) 

print(result) 

Traceback (most recent call last): 
    File "/mnt/hgfs/shared/eclipse/osfipa/ldap/ldap_write.py", line 28, in <module> 
    result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': [(MODIFY_REPLACE, ['replaced-text'])]}) 
    File "/usr/local/lib/python3.5/dist-packages/ldap3/core/connection.py", line 763, in modify 
    raise LDAPChangesError(self.last_error) 
ldap3.core.exceptions.LDAPChangesError: malformed change 

=ローカル "。 したがって、変更機能のDNが正しいはずです。そして、私は "ルール"属性を変更したい。

すべてのアイデアここで間違っているのは何ですか? Thxを事前に入力してください。

+0

私はpyhtonを知らないが、それはあなたがしようと私には奇妙に見えます置き換える属性も置き換えたい値も指定せずにmod_replaceを使ってエントリを変更する – Esteban

+0

あなたが言及したものは全てそこにあります、属性は 'ルール'です。置き換える値は文字列です"replaced-text" –

+0

あなたは何を知っていますか、stackoverflowの編集履歴があります。コメントを投稿したときには、「置き換えられたテキスト」はありませんでした。さらに、Pythonに関することは知らず、LDAPについても知られているように、空の値を指定した変更操作はプロトコルRFCによって修正削除と解釈される必要があります。したがって、スタックトレースimho: '[(MODIFY_DELETE、[] )] '(それは30秒前だった)。だから愚か者のために取られて、私はあなたにgoog運がこの – Esteban

答えて

0

https://github.com/cannatag/ldap3/issues/42

単純な構文エラーがあります。上記のリンクでは、答えを見つけることができます。 単純な解決策は、以下のコードのように変更することでした。一部「MODIFY_REPLACE置き換えテキスト」で

result = conn.modify('CN=phil stone,OU=Firewall,DC=domain,DC=local',{'rules': (MODIFY_REPLACE, ['replaced-text'])}) 

ルックは、その周りに何のリスト([])が存在しません。)

関連する問題