#!/bin/bash # 将用户添加到 Administrators 组的脚本 GERRIT_DIR="/home/renjianbo/gerrit_install/review_site" JAVA_HOME="/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64" USERNAME="renjianbo" echo "==========================================" echo "将用户 $USERNAME 添加到 Administrators 组" echo "==========================================" echo "" cd "$GERRIT_DIR" || exit 1 # 方法 1: 尝试通过 SSH(如果可用) echo "方法 1: 尝试通过 SSH 添加..." ssh -p 29418 renjianbo@localhost gerrit set-members --add "$USERNAME" Administrators 2>/dev/null if [ $? -eq 0 ]; then echo "✅ 通过 SSH 添加成功" exit 0 fi echo "SSH 方法失败,尝试其他方法..." echo "" # 方法 2: 通过数据库直接添加 echo "方法 2: 通过数据库添加..." # 查找用户的 account_id ACCOUNT_ID=$(cd "$GERRIT_DIR" && JAVA_HOME="$JAVA_HOME" java -cp db/h2*.jar org.h2.tools.Shell -url jdbc:h2:./db/ReviewDB -user sa -password "" -sql "SELECT account_id FROM accounts WHERE preferred_email LIKE '%263303411%' OR full_name LIKE '%renjianbo%' LIMIT 1;" 2>/dev/null | grep -E "^[0-9]+" | head -1) if [ -z "$ACCOUNT_ID" ]; then echo "⚠️ 无法找到用户账户,尝试通过用户名查找..." # 尝试其他方式 ACCOUNT_ID=$(cd "$GERRIT_DIR" && JAVA_HOME="$JAVA_HOME" java -cp db/h2*.jar org.h2.tools.Shell -url jdbc:h2:./db/ReviewDB -user sa -password "" -sql "SELECT account_id FROM accounts LIMIT 1;" 2>/dev/null | grep -E "^[0-9]+" | head -1) fi if [ -n "$ACCOUNT_ID" ]; then echo "找到账户 ID: $ACCOUNT_ID" # 查找 Administrators 组的 group_id GROUP_ID=$(cd "$GERRIT_DIR" && JAVA_HOME="$JAVA_HOME" java -cp db/h2*.jar org.h2.tools.Shell -url jdbc:h2:./db/ReviewDB -user sa -password "" -sql "SELECT group_id FROM account_groups WHERE name = 'Administrators';" 2>/dev/null | grep -E "^[0-9]+" | head -1) if [ -z "$GROUP_ID" ]; then echo "⚠️ 无法找到 Administrators 组" echo "请通过 Web 界面手动添加:" echo " 访问: http://101.43.95.130:8080/#/admin/groups/Administrators,members" exit 1 fi echo "找到 Administrators 组 ID: $GROUP_ID" # 检查用户是否已在组中 EXISTING=$(cd "$GERRIT_DIR" && JAVA_HOME="$JAVA_HOME" java -cp db/h2*.jar org.h2.tools.Shell -url jdbc:h2:./db/ReviewDB -user sa -password "" -sql "SELECT account_id FROM account_group_members WHERE account_id = $ACCOUNT_ID AND group_id = $GROUP_ID;" 2>/dev/null | grep -E "^[0-9]+") if [ -n "$EXISTING" ]; then echo "✅ 用户已在 Administrators 组中" else # 添加用户到组 echo "正在添加用户到组..." cd "$GERRIT_DIR" && JAVA_HOME="$JAVA_HOME" java -cp db/h2*.jar org.h2.tools.Shell -url jdbc:h2:./db/ReviewDB -user sa -password "" -sql "INSERT INTO account_group_members (account_id, group_id) VALUES ($ACCOUNT_ID, $GROUP_ID);" 2>/dev/null if [ $? -eq 0 ]; then echo "✅ 用户已添加到 Administrators 组" else echo "❌ 添加失败,请通过 Web 界面手动添加" fi fi else echo "❌ 无法找到用户账户" echo "请通过 Web 界面手动添加:" echo " 访问: http://101.43.95.130:8080/#/admin/groups/Administrators,members" fi echo "" echo "配置完成后,请:" echo "1. 刷新 Gerrit Web 界面" echo "2. 重新登录" echo "3. 检查是否可以看到 +2 选项"