1104 字
6 分钟
Gemini自动创建APIKEY
相关信息利用Google Cloud Shell自动创建Gemini APIKEY。手动是及其不健康的
2025-08-05 20:58:创建密钥脚本添加睡眠时间防止429错误
- 前往Google Cloud
- 点击右上角的shell图标,并打开editor

- 创建
a.sh文件,粘贴下面内容:#!/bin/bash# 设置要创建的项目数量为12PROJECT_COUNT=20# 获取当前账号的邮箱current_email=$(gcloud config get-value account)echo "当前账号的邮箱是: $current_email"# 项目前缀 - 确保以字母开头EMAIL_PREFIX=${current_email%%@*}# 替换prrfix里的`.`为`-`EMAIL_PREFIX=${EMAIL_PREFIX//\./-g}echo "生成的项目前缀为: $EMAIL_PREFIX"# 如果前缀以数字开头,添加字母p前缀if [[ $EMAIL_PREFIX =~ ^[0-9] ]]; thenPROJECT_ID_PREFIX="p$EMAIL_PREFIX"elsePROJECT_ID_PREFIX="$EMAIL_PREFIX"fiecho "生成的项目前缀为: $PROJECT_ID_PREFIX"# 存储项目ID的数组PROJECT_IDS=()# 检查已有项目EXISTING_PROJECTS=$(gcloud projects list --format="value(projectId)")# 如果存在项目,添加到数组中if [ ! -z "$EXISTING_PROJECTS" ]; thenfor PROJECT_ID in $EXISTING_PROJECTS; doPROJECT_IDS+=($PROJECT_ID)doneecho "已将${#PROJECT_IDS[@]}个已有项目添加到数组中"elseecho "未发现已有项目"fi# 创建指定数量的项目for i in $(seq 1 $PROJECT_COUNT); doPROJECT_ID="$PROJECT_ID_PREFIX-$i"echo "正在创建项目: $PROJECT_ID"# 创建新项目,不使用 --no-enable-billing 参数gcloud projects create $PROJECT_ID --name="API Project $i" &# 等待后台任务完成wait# 将项目ID添加到数组中PROJECT_IDS+=($PROJECT_ID)echo "项目 $PROJECT_ID 创建完成"sleep 2done# 输出API密钥列表API_KEYS=""# 循环处理每个项目IDfor PROJECT_ID in "${PROJECT_IDS[@]}"; doecho "正在处理项目: $PROJECT_ID"# 启用 Generative Language APIgcloud services enable generativelanguage.googleapis.com --project=$PROJECT_ID &# 生成新的API密钥KEY_NAME="gl-api-key-$(date +%Y%m%d-%H%M%S)"KEY_RESPONSE=$(gcloud beta services api-keys create \--display-name="Generative Language API Key" \--api-target=service=generativelanguage.googleapis.com \--project=$PROJECT_ID \--format="json" &)# 等待所有后台任务完成wait# 检查返回结果中是否包含keyStringif echo "$KEY_RESPONSE" | grep -q "keyString"; then# 直接从返回结果中提取keyStringAPI_KEY=$(echo "$KEY_RESPONSE" | grep -o '"keyString": "[^"]*' | cut -d'"' -f4)else# 如果返回结果中没有keyString,则使用原来的方式获取echo "返回结果中没有keyString,使用备用方式获取"# 获取新创建的API密钥KEY_NAME=$(gcloud beta services api-keys list \--project=$PROJECT_ID \--filter="displayName:Generative Language API Key" \--format="value(name)" \--limit=1 &)# 等待密钥列表返回wait# 获取API密钥字符串API_KEY=$(gcloud beta services api-keys get-key-string $KEY_NAME \--project=$PROJECT_ID \--format="get(keyString)" &)fi# 等待 API 密钥获取完成wait# 添加到API密钥列表API_KEYS="${API_KEYS}${API_KEY}\n"echo "已在项目 $PROJECT_ID 中创建API密钥"sleep 2doneecho "密钥生成完成"# 获取当前用户邮箱并输出结果USER_EMAIL=$(gcloud config get-value account)KEY_COUNT=$(echo -e "$API_KEYS" | grep -c .)echo "API密钥列表(共${KEY_COUNT}个):"echo "$USER_EMAIL"echo -e "$API_KEYS"# 删除当前目录下的a.sh和b.sh文件rm -f a.sh b.sh - 等待即可。最后会输出apikey在终端
- 删除所有项目,创建
b.sh,粘贴以下内容#!/bin/bash# 获取当前账号的邮箱current_email=$(gcloud config get-value account)echo "当前账号的邮箱是: $current_email"# 获取当前账号下的所有项目echo "正在获取当前账号下的所有项目..."PROJECT_IDS_TO_DELETE=($(gcloud projects list --format="value(projectId)"))if [ ${#PROJECT_IDS_TO_DELETE[@]} -eq 0 ]; thenecho "当前账号下没有发现任何项目"exit 0fiecho "发现 ${#PROJECT_IDS_TO_DELETE[@]} 个项目:"for PROJECT_ID in "${PROJECT_IDS_TO_DELETE[@]}"; doecho " - $PROJECT_ID"done# 直接开始删除,无需确认echo ""echo "开始删除项目..."# 删除计数器deleted_count=0failed_count=0failed_projects=()# 逐个删除项目for PROJECT_ID in "${PROJECT_IDS_TO_DELETE[@]}"; doecho "正在处理项目: $PROJECT_ID"# 检查项目是否存在if gcloud projects describe $PROJECT_ID &>/dev/null; then# 获取项目状态PROJECT_STATE=$(gcloud projects describe $PROJECT_ID --format="value(lifecycleState)" 2>/dev/null)echo "项目状态: $PROJECT_STATE"# 如果项目处于DELETE_REQUESTED状态,先恢复if [ "$PROJECT_STATE" = "DELETE_REQUESTED" ]; thenecho "项目处于删除请求状态,正在恢复..."if gcloud projects undelete $PROJECT_ID --quiet; thenecho "项目 $PROJECT_ID 恢复成功,等待3秒..."sleep 3elseecho "项目 $PROJECT_ID 恢复失败"((failed_count++))failed_projects+=($PROJECT_ID)continuefifi# 删除项目echo "正在删除项目: $PROJECT_ID"if gcloud projects delete $PROJECT_ID --quiet; thenecho "项目 $PROJECT_ID 删除成功"((deleted_count++))elseecho "项目 $PROJECT_ID 删除失败"((failed_count++))failed_projects+=($PROJECT_ID)fielseecho "项目 $PROJECT_ID 不存在,跳过"fidoneecho ""echo "删除操作完成!"echo "成功删除: $deleted_count 个项目"echo "删除失败: $failed_count 个项目"if [ $failed_count -gt 0 ]; thenecho "删除失败的项目:"for PROJECT_ID in "${failed_projects[@]}"; doecho " - $PROJECT_ID"donefiecho ""echo "注意: 删除的项目会进入30天恢复期,期间不会产生费用"在此处键入或粘贴代码
Gemini自动创建APIKEY
https://blog.useforall.com/posts/17/ 最后更新于 2025-08-09,距今已过 99 天
部分内容可能已过时
Lim's Blog