中转网关支持批量导入用户密钥,批量开通账号脚本

中转网关在处理大量用户接入时,手动逐个添加密钥和开通账号非常低效。
本文要解决的是:如何通过一个批量导入脚本,把用户密钥一次性写入中转网关,并自动开通对应的访问账号。
文中命令基于 Linux 服务器和常见中转网关(如 New-API、one-api 类管理面板)编写,接口字段以你实际部署的版本为准。

先确认两件事:网关类型和密钥文件格式

不同中转网关的管理接口略有差异,但批量导入的核心思路一致:先准备含用户信息和密钥的 CSV 文件,再调用管理 API 或直接写入数据库。

动手前先确认三点:

  • 中转网关管理面板是否提供“批量导入”入口。有入口就直接上传 CSV,无需写脚本。
  • 管理 API 是否开放。一般可在面板的“令牌管理”或“系统设置”里找到 API 地址和访问密钥。
  • 密钥字段的命名规则。常见字段为 user_emailuser_namequotaexpire_timekey

如果面板没有现成导入功能,才需要脚本方案。

编写批量导入脚本:一条命令开通一个账号

下面以 Bash + curl 为例,读取 CSV 文件,逐行调用管理 API 创建用户并导入密钥。
脚本会做三件事:创建用户、生成令牌、写入密钥。

先准备 users.csv,内容参考如下:

username,email,quota,expire_time,secret_key
zhangsan,zhangsan@example.com,100,2026-12-31,sk-test-001-xxxx
lisi,lisi@example.com,200,2026-12-31,sk-test-002-xxxx

保存脚本 batch_import.sh

#!/bin/bash

ADMIN_URL="https://你的网关域名"
ADMIN_TOKEN="你的管理API令牌"

while IFS=',' read -r username email quota expire key; do
  # 跳过表头
  if [ "$username" = "username" ]; then
    continue
  fi

  # 1. 创建用户
  curl -s -X POST "${ADMIN_URL}/api/user/register" \
    -H "Authorization: Bearer ${ADMIN_TOKEN}" \
    -H "Content-Type: application/json" \
    -d "{\"username\":\"${username}\",\"email\":\"${email}\",\"quota\":${quota},\"expire_time\":\"${expire}\"}"

  # 2. 为用户生成访问令牌并绑定密钥
  curl -s -X POST "${ADMIN_URL}/api/token/add" \
    -H "Authorization: Bearer ${ADMIN_TOKEN}" \
    -H "Content-Type: application/json" \
    -d "{\"username\":\"${username}\",\"secret_key\":\"${key}\"}"

  echo "已处理:${username}"
done < users.csv

给脚本加执行权限并运行:

chmod +x batch_import.sh
./batch_import.sh

如果你用的中转网关基于 New-API,它的创建用户和令牌接口路径通常是 /api/user//api/token/
具体参数以你部署版本的接口文档为准。

执行后如何验证是否成功

不要只看脚本不报错就结束,要落到数据验证。

  • 到管理后台的“用户列表”查看新增用户数量和配额是否正确。
  • 在“令牌管理”中确认每个用户都生成了一条密钥,且状态为“已启用”。
  • 用其中一个密钥调用网关的 v1/models 接口测试:
curl -s https://你的网关域名/v1/models -H "Authorization: Bearer sk-test-001-xxxx"

返回模型列表说明密钥有效。
如果返回 401,检查密钥是否复制完整,或者用户是否被禁用。

还可以写一个简单的统计命令,看看 CSV 里有多少行、后台实际创建了多少用户:

# 统计 CSV 行数(去掉表头)
tail -n +2 users.csv | wc -l

# 查看脚本输出和后台手动核对

容易踩的四个坑

  • CSV 文件编码错误。在 Windows 上编辑的 CSV 可能是 GBK 编码,导致中文用户名乱码。用 iconv -f GBK -t UTF-8 users.csv > users_utf8.csv 转换后再跑。
  • 密钥格式不对。中转网关的密钥通常以 sk- 开头,且长度有限制。如果面板提示密钥非法,先手动创建一个密钥复制到 CSV 中对比。
  • 接口字段名不匹配。不同版本字段可能是 user_name 而不是 username,可能没有 quota 而用 group。建议先用单条数据测试接口,确认无误再全量执行。
  • 重复导入产生垃圾数据。脚本没有做幂等判断,重复运行会创建同名用户。可以在脚本开头先检查用户名是否存在,或使用管理 API 中的更新接口。

从手动到批量:脚本只是第一步

批量导入用户密钥和开通账号,本质是把重复操作自动化。
执行完脚本后,建议把脚本和 CSV 模板保存到服务器固定目录,下次开通时替换内容即可。
如果用户量很大,可以进一步加循环延迟,避免请求过快触发网关限流:

sleep 1   # 每处理一个用户等待 1 秒

如果你正在处理中转网关批量导入用户密钥、批量开通账号这类需求,建议先按本文步骤用 2-3 条测试数据跑通流程,再导入全量数据。
遇到异常时优先看接口返回的 JSON 错误信息,并对照后台实际数据,不要盲目重试。

分享到:
上一篇
中转平台遇到大量CLOSE_WAIT连接,内核参数调优
下一篇
Agent RBAC权限模型,限制Agent调用Shell
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意