VvvebJs / check-github-token.sh
CatPtain's picture
Upload 10 files
676a3be verified
#!/bin/bash
# GitHub Token 权限快速检查脚本
# 使用方法: ./check-github-token.sh YOUR_TOKEN YOUR_OWNER YOUR_REPO
TOKEN=$1
OWNER=$2
REPO=$3
if [ -z "$TOKEN" ] || [ -z "$OWNER" ] || [ -z "$REPO" ]; then
echo "❌ 用法: $0 <github_token> <owner> <repo>"
echo "例如: $0 ghp_xxxxxxxxxxxx myusername myrepo"
exit 1
fi
echo "🔍 检查 GitHub Token 权限..."
echo "Token: ${TOKEN:0:8}..."
echo "仓库: $OWNER/$REPO"
echo "=" * 50
# 1. 检查 Token 基本权限
echo "📋 1. 检查 Token 基本权限..."
USER_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \
-H "User-Agent: VvvebJs-Check/1.0" \
https://api.github.com/user)
if echo "$USER_RESPONSE" | grep -q '"login"'; then
USERNAME=$(echo "$USER_RESPONSE" | grep '"login"' | sed 's/.*"login": *"\([^"]*\)".*/\1/')
echo "✅ Token 有效 - 用户: $USERNAME"
else
echo "❌ Token 无效或无权限"
echo "详情: $USER_RESPONSE"
exit 1
fi
# 2. 检查仓库访问权限
echo "📁 2. 检查仓库访问权限..."
REPO_RESPONSE=$(curl -s -H "Authorization: token $TOKEN" \
-H "User-Agent: VvvebJs-Check/1.0" \
https://api.github.com/repos/$OWNER/$REPO)
if echo "$REPO_RESPONSE" | grep -q '"full_name"'; then
echo "✅ 仓库可访问"
# 检查权限详情
if echo "$REPO_RESPONSE" | grep -q '"permissions"'; then
ADMIN=$(echo "$REPO_RESPONSE" | grep '"admin"' | sed 's/.*"admin": *\([^,]*\).*/\1/')
PUSH=$(echo "$REPO_RESPONSE" | grep '"push"' | sed 's/.*"push": *\([^,]*\).*/\1/')
PULL=$(echo "$REPO_RESPONSE" | grep '"pull"' | sed 's/.*"pull": *\([^,]*\).*/\1/')
echo " - Admin: $ADMIN"
echo " - Push: $PUSH"
echo " - Pull: $PULL"
if [ "$PUSH" = "true" ]; then
echo "✅ 有写入权限"
else
echo "❌ 缺少写入权限"
fi
fi
else
echo "❌ 仓库不存在或无访问权限"
echo "详情: $REPO_RESPONSE"
exit 1
fi
# 3. 测试文件创建
echo "✏️ 3. 测试文件创建权限..."
TEST_FILE="vvvebjs-test-$(date +%s).txt"
TEST_CONTENT=$(echo "VvvebJs Test - $(date)" | base64)
CREATE_RESPONSE=$(curl -s -X PUT \
-H "Authorization: token $TOKEN" \
-H "User-Agent: VvvebJs-Check/1.0" \
-H "Content-Type: application/json" \
-d "{\"message\":\"VvvebJs permission test\",\"content\":\"$TEST_CONTENT\"}" \
https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE)
if echo "$CREATE_RESPONSE" | grep -q '"sha"'; then
echo "✅ 文件创建成功"
# 清理测试文件
SHA=$(echo "$CREATE_RESPONSE" | grep '"sha"' | head -1 | sed 's/.*"sha": *"\([^"]*\)".*/\1/')
curl -s -X DELETE \
-H "Authorization: token $TOKEN" \
-H "User-Agent: VvvebJs-Check/1.0" \
-H "Content-Type: application/json" \
-d "{\"message\":\"Clean up test file\",\"sha\":\"$SHA\"}" \
https://api.github.com/repos/$OWNER/$REPO/contents/$TEST_FILE > /dev/null
echo "🧹 测试文件已清理"
else
echo "❌ 文件创建失败"
echo "详情: $CREATE_RESPONSE"
fi
echo ""
echo "🎉 权限检查完成!"
echo ""
echo "📋 配置建议:"
echo "GITHUB_TOKEN=$TOKEN"
echo "GITHUB_OWNER=$OWNER"
echo "GITHUB_REPO=$REPO"
echo "GITHUB_BRANCH=main"
echo "GITHUB_PATH=pages/"
echo "STORAGE_TYPE=github"