统一开通/管理 Microsoft 365(世纪互联)和 Adobe Creative Cloud 用户的自包含工具,支持创建、授权、密码重置、删除、查询、批量及自检,CLI/HTTP API 共用同一套 provider。适用场景:给XX开通账号、新建/新增用户、入职开账号、开通 Office、加 O 等。
统一的 Python CLI,管理 Microsoft 365(世纪互联版) 与 Adobe Creative Cloud 用户。 本 skill 自带完整代码 + 凭据,解压即用,无需再 clone 原仓库。
bash
pip install -r requirements.txt # 首次:requests / python-dotenv / flask(需 Python 3.9+)
bash
# 方式 A —— 自带 CLI(推荐手敲):oup 会自动定位 skill 目录、加载 .env,可从任意路径调用
./oup adobe inspect zhangsan@example.com
ln -sf "$PWD/oup" /usr/local/bin/oup # 可选:软链到 PATH 后全局 `oup adobe ...`
# 方式 B —— 直接调脚本:必须先 cd 到 skill 目录,且用 python3(非交互 shell 里 python 可能是 py2)
cd <本 skill 所在目录> && python3 main.py adobe inspect zhangsan@example.com
下文示例统一用
oup;等价于python3 main.py。 别用裸python——很多机器上它指向 Python 2,会直接 SyntaxError。
.env —— 已随包含真实生产配置( CLIENT_SECRET / ADOBE_CLIENT_SECRET / SMTP_PASSWORD / DEFAULT_PASSWORD 等)。.env 已被 .gitignore 排除。把本 skill 放进任何 git 仓库前,务必确认 .env 不会被 git add。绝不能 commit/push 到 GitHub。.env,代码不动( config.py 是唯一读取处)。bash
./oup office365 init # 检查 .env、拉产品、缓存默认 license
./oup adobe init # 检查 .env、拉 Adobe 产品/profile
两条 init 都正常返回产品列表 = 工具可用。失败先看 .env 与下方 Red Flags。
用户说provider命令"给 XX 开账号 / 新建用户"(未说平台)先问用 AskUserQuestion 问 provider/LDAP/姓名"新员工 / 入职开账号"bothO365 → Adobe 顺序执行"给 XX 开 Office / 加 Office"office365见 §3"给 XX 开 Adobe / 全家桶 / All Apps"adobe见 §4"批量开户"—需要列表(CSV/粘贴),逐条执行后汇总
bash
./oup office365 create <ldap> --display-name "<中文名>" [--product O365_BUSINESS]
--product → 用 init 缓存的默认 license.env SMTP 发通知邮件(含初始密码)id、 userPrincipalName、 passwordentra.microsoftonline.cn / partner.onmschina.cn),不是国际版bash
./oup adobe create <ldap>@<domain> [--product cc|ps|acrobat]
--product cc/ all =全家桶, ps =Photoshop, acrobat =Acrobat ProaddAdobeID + add group 一次完成邀请与授权{"completed":1,"result":"success"}inspect,返回 200/存在 → 用 AskUserQuestion 确认是"重置"还是"跳过",绝不静默覆盖。error.group.license_quota_exceeded)→ 报告用户,不静默降级到其他产品。bash
./oup office365 inspect <ldap> --json
./oup adobe inspect <ldap>@<domain> --json
给用户摘要:账号(LDAP+email)、初始密码/邀请说明、已授权产品、登录入口 (O365: https://portal.partner.microsoftonline.cn · Adobe: https://creativecloud.adobe.com)。%E3%80%82)
bash
./oup <provider> products [--refresh] # 列/刷新产品
./oup <provider> assign <id> --product <p>
./oup <provider> reset <id> # 重置密码
./oup <provider> delete <id> # 删除
./oup <provider> alias <name> <product> # 设产品别名
./oup <provider> selftest # 端到端自检(会建→授→重置→删临时用户)
python3 -m app.api.server # 起 HTTP API(路由镜像 CLI)
provider 别名: office365/ o365/ m365 同义; adobe/ ps 同义。
症状原因处理O365 Insufficient privilegesEntra App 权限未管理员同意Entra → API 权限 → 授予管理员同意O365 License not availablelicense 池用完购买/回收,不硬删他人Adobe error.group.license_quota_exceeded座位不够报告用户,不降级Adobe error.domain.trust.nonexistentfederatedID 但域名未声明改用 adobeID(默认就是)任一 init 报 missing env.env 缺字段对照 .env.example 补齐
入口( main.py CLI / app/api/server.py Flask) → app/services/user_service.py(统一业务门面) → app/providers/{office365,adobe}/(对接外部 API)。
扩展功能先加到 user_service.py 再让 CLI/API 暴露。详见 README.md、 docs/README_ADOBE.md、 docs/README_API.md。