如何用Bash脚本批量创建Gitea用户?支持CSV与API(AWS CloudShell)
批量通过CSV创建Gitea用户(Bash脚本 + Gitea API)
准备工作
- 获取Gitea管理员API令牌:登录Gitea后台,进入「设置」→「应用」→「生成令牌」,勾选
admin:user权限。 - 确认AWS CloudShell已安装
curl、jq和openssl(默认已预装,若缺失可通过sudo yum install curl jq openssl安装)。
CSV文件格式
创建new_employees.csv,包含新员工的邮箱、用户名和全名,示例:
email,username,full_name john.doe@company.com,jdoe,John Doe jane.smith@company.com,jsmith,Jane Smith
批量创建脚本
保存以下内容为batch_create_gitea_users.sh:
#!/bin/bash # 配置参数 GITEA_DOMAIN="git.company.com" API_URL="https://${GITEA_DOMAIN}/api/v1/admin/users" # 建议通过环境变量传入令牌,避免硬编码 GITEA_TOKEN="${GITEA_TOKEN:-your_admin_api_token_here}" CSV_FILE="new_employees.csv" # 检查依赖文件 if [ ! -f "$CSV_FILE" ]; then echo "错误:未找到CSV文件 $CSV_FILE" exit 1 fi # 跳过表头,逐行处理用户数据 tail -n +2 "$CSV_FILE" | while IFS=, read -r email username full_name; do # 生成12位随机初始密码(包含大小写字母和数字) password=$(openssl rand -base64 9 | tr -dc 'A-Za-z0-9' | head -c12) # 调用Gitea Admin API创建用户 response=$(curl -s -X POST "$API_URL" \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "email": "'"$email"'", "username": "'"$username"'", "full_name": "'"$full_name"'", "password": "'"$password"'", "must_change_password": true }') # 解析响应判断结果 if echo "$response" | jq -e '.id' > /dev/null; then echo "✅ 用户创建成功:$username | 初始密码:$password" # 可选:将结果写入日志文件 echo "$username,$email,$password" >> gitea_users_created.log else error_msg=$(echo "$response" | jq -r '.message // "未知错误"') echo "❌ 用户创建失败:$username | 错误信息:$error_msg" fi done
运行步骤
- 给脚本添加执行权限:
chmod +x batch_create_gitea_users.sh - (推荐)通过环境变量传入API令牌,避免硬编码泄露:
export GITEA_TOKEN="your_actual_admin_token" - 在AWS CloudShell中执行脚本:
./batch_create_gitea_users.sh
关键说明
must_change_password: true:强制新员工首次登录时修改密码,提升安全性。- 若需要从CSV读取预设密码,可修改脚本,将
password变量改为读取CSV的对应列(需调整CSV格式增加password列)。 - 确保AWS CloudShell能访问
git.company.com,可通过curl -I https://git.company.com测试网络连通性。
内容的提问来源于stack exchange,提问作者Karthik Bhandary
相关产品推荐
相关产品推荐

