-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiagnose_404.sh
More file actions
executable file
·157 lines (134 loc) · 5.13 KB
/
diagnose_404.sh
File metadata and controls
executable file
·157 lines (134 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
# GitHub 仓库404问题诊断脚本
set -e
echo "🔍 GitHub仓库404问题诊断"
echo "时间: $(date)"
echo ""
# 检查环境变量
echo "=== 环境变量检查 ==="
if [[ -z "$GITHUB_TOKEN" ]]; then
echo "❌ GITHUB_TOKEN未设置"
echo "💡 请设置: export GITHUB_TOKEN=\"your_token_here\""
exit 1
else
echo "✅ GITHUB_TOKEN已设置"
echo " Token前10位: ${GITHUB_TOKEN:0:10}..."
fi
echo ""
# 检查必需工具
echo "=== 必需工具检查 ==="
MISSING=()
for cmd in git curl; do
if ! command -v "$cmd" &>/dev/null; then
echo "❌ $cmd: 未安装"
MISSING+=("$cmd")
else
echo "✅ $cmd: $(which $cmd)"
fi
done
echo ""
if [[ ${#MISSING[@]} -gt 0 ]]; then
echo "⚠️ 缺少必需工具,需要安装: ${MISSING[*]}"
echo "💡 Ubuntu/Debian: sudo apt-get install git curl"
echo "💡 macOS: brew install git curl"
exit 1
fi
# 验证Token
echo "=== GitHub Token验证 ==="
RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/user 2>/dev/null || echo "{}")
USERNAME=$(echo "$RESPONSE" | grep -o '"login":"[^"]*"' | cut -d'"' -f4 | head -1)
if [[ -z "$USERNAME" ]]; then
echo "❌ Token无效或网络错误"
echo "响应: $RESPONSE" | head -200
exit 1
else
echo "✅ Token有效"
echo " 用户名: $USERNAME"
echo " 用户主页: https://github.com/$USERNAME"
fi
echo ""
# 检查仓库是否存在
REPO_NAME="github-environment-test-suite"
echo "=== 仓库检查 ==="
echo "检查仓库: $REPO_NAME"
REPO_RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/$USERNAME/$REPO_NAME 2>/dev/null || echo "{}")
ERROR_MSG=$(echo "$REPO_RESPONSE" | grep -o '"message":"[^"]*"' | cut -d'"' -f4 | head -1)
if [[ "$ERROR_MSG" == "Not Found" ]]; then
echo "❌ 仓库不存在: https://github.com/$USERNAME/$REPO_NAME"
echo " 返回404: Not Found"
echo ""
# 列出用户所有仓库
echo "📦 用户现有仓库列表:"
REPOS=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/user/repos?per_page=100" 2>/dev/null || echo "[]")
echo "$REPOS" | grep -o '"name":"[^"]*"' | cut -d'"' -f4 | sort | while read repo; do
echo " - $repo"
done | head -20
echo ""
echo "🔧 修复步骤:"
echo " 1. 如果仓库在其他用户名下,请访问: https://github.com/$USERNAME/$REPO_NAME"
echo " 2. 如果未创建,运行上传脚本: ./upload_to_github_auto.sh --auto"
echo " 3. 检查Token权限: 需要 'repo' 完全权限"
echo " 4. 如果仓库名称错误,修改脚本中的 REPO_NAME"
else
REPO_URL=$(echo "$REPO_RESPONSE" | grep -o '"html_url":"[^"]*"' | cut -d'"' -f4 | head -1)
REPO_PRIVATE=$(echo "$REPO_RESPONSE" | grep -o '"private":[^,]*' | cut -d':' -f2)
echo "✅ 仓库存在"
echo " 地址: $REPO_URL"
echo " 私有: $REPO_PRIVATE"
echo ""
if [[ "$REPO_PRIVATE" == "true" ]]; then
echo "⚠️ 仓库是私有的,需要登录才能访问"
echo "💡 公开仓库查看者无需登录,私有仓库仅对授权用户可见"
fi
if [[ "$USERNAME" != "lilei0311" ]]; then
echo "⚠️ 仓库属于用户 '$USERNAME',而非 'lilei0311'"
echo "💡 请访问: $REPO_URL"
fi
fi
echo ""
# 检查上传脚本
echo "=== 上传脚本状态 ==="
SCRIPT_PATH="./upload_to_github_auto.sh"
if [[ -f "$SCRIPT_PATH" ]]; then
echo "✅ 上传脚本存在: $SCRIPT_PATH"
# 检查脚本配置
REPO_IN_SCRIPT=$(grep -o 'REPO_NAME="[^"]*"' "$SCRIPT_PATH" | head -1 | cut -d'"' -f2)
DEFAULT_TOKEN=$(grep -o 'DEFAULT_TOKEN="[^"]*"' "$SCRIPT_PATH" | head -1 | cut -d'"' -f2)
echo " 配置的仓库名: $REPO_IN_SCRIPT"
if [[ -n "$DEFAULT_TOKEN" && "$DEFAULT_TOKEN" != \"\" ]]; then
echo " 脚本中的默认Token: ${DEFAULT_TOKEN:0:10}..."
else
echo " 脚本未配置默认Token (依赖环境变量)"
fi
else
echo "❌ 上传脚本不存在"
fi
echo ""
# 总结
echo "=== 诊断总结 ==="
echo "🔍 问题: 访问 https://github.com/lilei0311/github-environment-test-suite 返回404"
echo ""
echo "🎯 可能原因:"
echo " 1. 仓库从未创建"
echo " 2. 仓库创建在其他GitHub用户下 (当前用户: $USERNAME)"
echo " 3. 仓库是私有仓库,且未登录查看"
echo " 4. 仓库名称拼写错误"
echo ""
echo "🚀 解决方案:"
echo " 1. 确认仓库地址: https://github.com/$USERNAME/$REPO_NAME"
echo " 2. 如果未创建,运行: ./upload_to_github_auto.sh --auto"
echo " 3. 如果Token权限不足,重新生成Token:"
echo " - 访问 https://github.com/settings/tokens"
echo " - 生成新Token,勾选 'repo' 权限"
echo " 4. 更新环境变量: export GITHUB_TOKEN=\"新Token\""
echo ""
echo "📞 如需帮助,请提供:"
echo " - 上传脚本的输出日志"
echo " - 环境变量GITHUB_TOKEN的前10位"
echo " - 当前GitHub用户名 ($USERNAME)"