tg / start.sh
l-g-t's picture
Update start.sh
aa597b2 verified
#!/bin/bash
echo "===== Application Startup at $(date +%Y-%m-%d\ %H:%M:%S) ====="
echo ""
echo "========================================"
echo "==== 🚀 启动前网络连通性诊断开始 🚀 ===="
echo "========================================"
# 要测试的域名列表
HOSTS_TO_TEST=(
"api.telegram.org"
"www.cloudflare.com"
"workers.dev"
"tg.tonycn.ggff.net" # 替换为你实际的 Workers 域名
)
for host in "${HOSTS_TO_TEST[@]}"; do
echo "--- 测试域名: ${host} ---"
# 1. DNS 解析测试 (ping)
echo "▶ 尝试 ping (DNS 解析和连通性)..."
ping -c 3 -W 5 "${host}"
PING_EXIT_CODE=$?
if [ $PING_EXIT_CODE -ne 0 ]; then
echo "🚨 PING 失败 (退出代码: ${PING_EXIT_CODE}):无法解析或连接到 ${host}。"
else
echo "✅ PING 成功。"
fi
# 2. HTTP/HTTPS 连接测试 (curl)
echo "▶ 尝试 curl (HTTP/S 连接测试)..."
# 使用 -k 允许不安全的 SSL 连接,以防证书与 IP 冲突导致 curl 失败。
curl -I -m 10 -k "https://${host}"
CURL_EXIT_CODE=$?
if [ $CURL_EXIT_CODE -ne 0 ]; then
echo "🚨 CURL 失败 (退出代码: ${CURL_EXIT_CODE}):无法建立 HTTPS 连接到 ${host}。"
else
echo "✅ CURL 成功 (响应头已打印)。"
fi
echo "--------------------------------"
done # <--- 修正后的 done 关键字
echo "=========================================="
echo "==== 🛠️ 绕过 DNS 故障:修改 hosts 文件 🛠️ ===="
echo "=========================================="
# 🚨 强制 DNS 解析:将 Workers 域名和其 IP 写入 hosts 文件
# 根据上一次的日志,IP 地址是 172.67.196.135
WORKER_IP="172.67.196.135"
WORKER_DOMAIN="tg.tonycn.ggff.net" # 替换为你实际的 Workers 域名
# 使用 sed 确保 /etc/hosts 文件可写
if grep -q "${WORKER_DOMAIN}" /etc/hosts; then
echo "hosts 文件中已存在 ${WORKER_DOMAIN},跳过添加。"
else
echo "${WORKER_IP} ${WORKER_DOMAIN}" >> /etc/hosts
echo "已在 /etc/hosts 中添加 ${WORKER_DOMAIN} -> ${WORKER_IP}"
fi
echo "=========================================="
echo "==== ✅ hosts 修改完成,开始部署 Bot ===="
echo "=========================================="
# 1. 在后台启动 Bot
echo "尝试定位 main.py 文件并启动 Bot..."
# Bot 启动命令: python main.py <TG_TOKEN> <GEMINI_KEY>
python $(find /app -name main.py) "${TELEGRAM_BOT_API_KEY}" "${GEMINI_API_KEYS}" &
echo "Bot 进程已在后台启动。请在日志中查找 API 错误..."
sleep 5
# 2. 启动 Web 服务器 (必须在前台运行以保持容器存活)
echo "启动 Web 服务器 (Port 7860) 以保持 HF Space 运行..."
python app.py