2017-03-15 38 views
1

我想要做的(我認爲的)將是一件非常簡單的事情。我有一個LDAP條目,看起來像這樣(以LDIF格式):使用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 

在我的代碼中,我有所有這些條目表示爲字典。我使用Python的LDIF編寫器將這些條目寫入適當的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) 

編輯

如果您有一個名爲deletes的已刪除用戶的陣列,您可以將其傳遞到像這樣的條目:

'uniqueMember': deletes 

似乎工作:-)

+0

**就像從上面的天使**非常感謝你!該解決方案效果很好。 – Chloe