You need to enable JavaScript to run this app. 如何在LDAP中批量修改多个用户的uidNumber属性值?
优惠活动
大模型
产品
解决方案
定价
更多

如何在LDAP中批量修改多个用户的uidNumber属性值?

LDAP 批量修改用户 uidNumber 方案

核心实现思路

你现有单条修改的逻辑已经可用,只需要通过映射表匹配+循环执行修改即可完成批量操作,无需复杂调整。

步骤1:整理映射关系

首先整理好需要修改的 旧uidNumber 和 新uidNumber 的对应关系,推荐存在Python字典中(如果量很大也可以存CSV文件读取),示例如下:

# 格式:{旧uidNumber: 新uidNumber, ...}
uid_map = {
    2147483739: 5000,
    2147483740: 5001,
    2147483741: 5002,
    2147483742: 5003,
    2147483743: 5004,
    2147483744: 5005
}

步骤2:批量查询匹配用户并修改

你可以先通过LDAP搜索接口拉取所有符合条件的用户,匹配到映射表后执行批量修改,完整示例代码如下:

from ldap import MODIFY_REPLACE
# 此处省略你原有LDAP连接初始化的代码,保持你现有conn对象的初始化逻辑即可

# 1. 搜索所有需要修改的用户(搜索base根据你实际结构调整)
search_base = "ou=People,ou=Auth,o=CSUN"
search_filter = "(|%s)" % "".join([f"(uidNumber={old_uid})" for old_uid in uid_map.keys()])
search_attrs = ["dn", "uidNumber"]

result = conn.search_s(search_base, ldap.SCOPE_SUBTREE, search_filter, search_attrs)

# 2. 循环执行修改
for dn, entry in result:
    old_uid = int(entry["uidNumber"][0])
    new_uid = uid_map.get(old_uid)
    if new_uid:
        # 调用你原有单条修改的逻辑
        mod_attrs = {'uidNumber': [(MODIFY_REPLACE, [str(new_uid)])]}
        conn.modify(dn, mod_attrs)
        print(f"已修改用户 {dn} 的uidNumber: {old_uid} -> {new_uid}")

注意事项

  • 操作前必须全量备份LDAP数据,避免操作失误无法回滚
  • 正式修改前先注释conn.modify行,执行打印逻辑确认映射匹配、用户DN正确后再执行实际修改
  • 修改完成后需要验证关联的系统权限、文件属主等绑定uidNumber的业务是否正常,避免业务受影响

内容的提问来源于stack exchange,提问作者Robin Malhotra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 00:30:04