2017-03-15 16 views
1

私がしたいことは(私が思ったように)非常に簡単なことです。私はdictsとして表され、すべてのこれらのエントリを持って、自分のコードでLDIFをPythonで使用してLDAP内の属性を削除する

dn: cn=myorg,ou=teams,ou=groups,o=company,c=us 
cn: myorg 
objectClass: top 
objectClass: CompanyTeams 
objectClass: groupOfUniqueNames 
owner: cn=john,ou=people,o=company,c=us 
uniqueMember: cn=bob,ou=people,o=company,c=us 
uniqueMember: cn=bill,ou=people,o=company,c=us 
uniqueMember: cn=carol,ou=people,o=company,c=us 
uniqueMember: cn=frank,ou=people,o=company,c=us 
uniqueMember: cn=alice,ou=people,o=company,c=us 

:私は、LDAP(LDIF形式で)このようなエントリを持っています。私はこれらのエントリを適切なLDIFに書き出すためにPythonのLDIFライターを使用しています。

def dump_ldif(self): 
    writer = LDIFWriter(open('entrybackup.ldif', 'wb')) 
     writer.unparse(cn=myorg, self.all_the_teams.get_teamstr_by_name('{'objectClass': ['top', 'CompanyTeams', 'groupOfUniqueNames']'owner': ['cn=john,ou=people,o=company,c=us'], 'uniqueMember': ['uniqueMember: cn=bob,ou=people,o=company,c=us','uniqueMember: cn=bill,ou=people,o=company,c=us','uniqueMember: cn=carol,ou=people,o=company,c=us','uniqueMember: cn=frank,ou=people,o=company,c=us','uniqueMember: cn=alice,ou=people,o=company,c=us'], 'cn': ['myorg']}') 

しかし、削除/変更演算子を使用するLDIF出力はどうやっていますか?私は離れて行きたいのuniqueMemberのリストがあります:

['cn=bob,ou=people,o=company,c=us', 'cn=bill,ou=people,o=company,c=us'] 

とを(私は信じている)、これは私のリストから引っ張って、LDIF形式での最終目標である:

dn: cn=myorg,ou=teams,ou=groups,o=company,c=us 
changetype: modify 
delete: uniqueMember 
uniqueMember: cn=bob,ou=people,o=company,c=us 
uniqueMember: cn=bill,ou=people,o=company,c=us 

はいくつかがありませんPython(2.7)でこれを行う簡単な方法は?クレイジーな気分になり始めました。注:私はテキストの出力/操作を行うことができますが、この出力を書き込むにはLDIFWriterを使用します。 LDIFディレクティブを出力するための構文を探したいだけです。

答えて

0

私はPythonの熟練者ではありませんが、LDAPは私のケーキです。

ライターに渡すエントリは単純に値を持つデータオブジェクトです。実際にはPython LDIFWriterはその構文をLDIFに変換する簡単なクラスです。私はあなたがやるべきだと思う何

あなたのエントリが変更に変換、あるその後、LDIFWriterへのパスを、このような何か:

entry={ 'changetype' : ['modify'], 
      'delete': ['uniqueMember'], 
     'uniqueMember': ['cn=bob,ou=people,o=company,c=us','cn=bill,ou=people,o=company,c=us'], 
     } 
writer.unparse('cn=myorg', entry) 

EDIT

あなたの場合deletesと呼ばれる削除されたユーザーの配列がある場合は、次のようなエントリに渡すことができます:

'uniqueMember': deletes 

動作するように思われます:-)

+0

** **天使のように**ありがとうございました!このソリューションは素晴らしい結果を出しました。 – Chloe

関連する問題