因為沒發現群組清空使用者的功能,最開始寫的函數是三個參數:群組標識、添加使用者、刪除使用者。覺得介面不好用,後來發現組合下即可,代碼如下:
#清除,在將使用者全部插入 def update_users(self, groupname, users=[]): """ :param groupname: 組名,字串類型如"groupname"; :param users:使用者列表,如addusers為['user1','user2'] :return: 注函數中定義的參數modlist可以接受多個參數列表,其中: MOD_ADD: 如果屬性存在,這個屬性可以有多個值,那麼新值加進去,舊值保留 MOD_DELETE :如果屬性的值存在,值將被刪除 MOD_REPLACE :這個屬性所有的舊值將會被刪除,這個值被加進去 舉例: [( ldap.MOD_ADD, 'memberUid', 'user1' ), ( ldap.MOD_DELETE, 'memberUid', 'user3')] """ modlist = [] if len(users) == 0: modlist.append((ldap.MOD_REPLACE, 'memberUid', "")) for index in range(len(users)): if index == 0: modlist.append((ldap.MOD_REPLACE, 'memberUid', str(users[index]))) else: modlist.append((ldap.MOD_ADD, 'memberUid', str(users[index]))) try: obj = self.ldapconn obj.protocal_version = ldap.VERSION3 modifyDN = "cn=%s,ou=Group,%s" % (groupname, self.base_dn) obj.modify_s(modifyDN, modlist) obj.unbind_s() return True except ldap.LDAPError, e: print("%s update users failed,reason: %s" % (groupname, str(e))) return False