You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash脚本批量创建Gitea用户?支持CSV与API(AWS CloudShell)

批量通过CSV创建Gitea用户(Bash脚本 + Gitea API)

准备工作

  1. 获取Gitea管理员API令牌:登录Gitea后台,进入「设置」→「应用」→「生成令牌」,勾选admin:user权限。
  2. 确认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

运行步骤

  1. 给脚本添加执行权限:
    chmod +x batch_create_gitea_users.sh
    
  2. (推荐)通过环境变量传入API令牌,避免硬编码泄露:
    export GITEA_TOKEN="your_actual_admin_token"
    
  3. 在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:35:18