4.3 KiB
4.3 KiB
AD User Creator
用于 AD 用户自动化创建的 Python 脚本集,支持交互式与批量模式(CSV/XLSX),并提供菜单式单入口程序。
Python 环境
- 解释器:
/opt/homebrew/Caskroom/miniconda/base/bin/python
安装依赖
/opt/homebrew/Caskroom/miniconda/base/bin/python -m pip install -r requirements.txt
配置
- 修改
config/config.yaml(所有配置均在此文件中维护)。
配置优先级:命令行参数(如 --config)> config.yaml。
关键字段:
ldap.people_base_dn: 例如OU=People,DC=example,DC=comldap.groups_base_dn: 例如OU=linux,OU=Groups,DC=example,DC=comdefaults.initial_uid_number: 默认为2106defaults.initial_password: 默认初始密码"1234.com"paths.uid_state_file: uidNumber 持久化文件paths.group_gid_map_file: 组与 gidNumber 映射文件(默认staff: 3000)behavior.require_ldaps_for_password: 密码设置要求 LDAPS(建议保持true)
初始化状态文件
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.main init-state
菜单式入口(推荐)
新增菜单入口:
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.entry
启动后会先选择模式:
1交互式创建2批量导入3修改配置文件路径q退出
交互式创建(命令行直达)
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.main interactive --config config/config.yaml
或直接运行根目录脚本(默认交互式):
./run.sh
dry-run:
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.main interactive --dry-run
批量创建(正式支持 CSV/XLSX)
CSV:
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.main batch --input users.csv --continue-on-error true
./run.sh -f users.csv
XLSX:
/opt/homebrew/Caskroom/miniconda/base/bin/python -m ad_user_creator.main batch --input users.xlsx --continue-on-error true
./run.sh -f users.xlsx
dry-run 示例:
./run.sh -f users.xlsx --dry-run
仅支持 .csv 与 .xlsx。
输入表头格式
必须包含以下列:
姓名用户名邮箱部门 OU基础组项目组资源组
示例:
姓名,用户名,邮箱,部门 OU,基础组,项目组,资源组
杨滨,yangbin,tony.yang@aflowx.com,CEO,staff,,
孙彤,sunt,sun.tong@aflowx.com,CTO,staff,,
矫渊培,jiaoyp,jiao.yp@aflowx.com,RnD/tm_hardware,staff,"prj_r3xx_hw,prj_demo",
规则:
部门 OU=CEO-> 用户 DN 路径包含OU=CEO,<people_base_dn>部门 OU=RnD/tm_hardware-> 用户 DN 路径包含OU=tm_hardware,OU=RnD,<people_base_dn>项目组、资源组支持逗号分隔,可空
Linux 属性映射
创建用户时会写入:
uid = sAMAccountNameuidNumber = state/uid_state.json自增分配(起始 2106)unixHomeDirectory = /home/<sAMAccountName>gidNumber = 基础组 gidNumber(来自state/group_gid_map.yaml)mail = 邮箱
账号启用与初始密码
用户创建流程为:
- 先以禁用状态创建用户(
userAccountControl=514) - 设置初始密码(默认
"1234.com") - 启用用户(
userAccountControl=512) - 添加基础组与可选组
输出与日志
- 批量结果:
state/last_batch_result.csv - 运行日志:
state/run.log - 批量状态:
CREATED:新建用户成功UPDATED:已存在用户,属性或组关系发生更新SKIPPED_NO_CHANGE:已存在用户且无任何变化FAILED:处理失败
常见问题
- LDAP 连接失败:检查 host/port/use_ssl/bind_dn/bind_password
- 基础组缺失或未映射 gid:检查 AD 组是否存在,以及
state/group_gid_map.yaml - 文件格式报错:确认输入文件后缀是
.csv或.xlsx WILL_NOT_PERFORM:通常是未使用 LDAPS、密码策略不满足、或权限不足
打包为单文件二进制
安装 PyInstaller:
/opt/homebrew/Caskroom/miniconda/base/bin/python -m pip install pyinstaller
使用 spec 构建:
pyinstaller build/ad_user_creator.spec
构建完成后,可执行文件位于:
dist/ad-user-creator
运行后将先显示菜单供选择模式。