| #!/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" |
| ) |
|
|
| for host in "${HOSTS_TO_TEST[@]}"; do |
| echo "--- 测试域名: ${host} ---" |
| |
| |
| 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 |
| |
| |
| echo "▶ 尝试 curl (HTTP/S 连接测试)..." |
| |
| 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 |
|
|
| echo "==========================================" |
| echo "==== 🛠️ 绕过 DNS 故障:修改 hosts 文件 🛠️ ====" |
| echo "==========================================" |
|
|
| |
| |
| WORKER_IP="172.67.196.135" |
| WORKER_DOMAIN="tg.tonycn.ggff.net" |
|
|
| |
| 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 "==========================================" |
|
|
|
|
| |
| echo "尝试定位 main.py 文件并启动 Bot..." |
| |
| python $(find /app -name main.py) "${TELEGRAM_BOT_API_KEY}" "${GEMINI_API_KEYS}" & |
|
|
| echo "Bot 进程已在后台启动。请在日志中查找 API 错误..." |
|
|
| sleep 5 |
|
|
| |
| echo "启动 Web 服务器 (Port 7860) 以保持 HF Space 运行..." |
| python app.py |