guoyu/log/test_whisper_connection.sh
2025-12-11 23:28:07 +08:00

140 lines
5.5 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Whisper 服务连接测试脚本Linux版本
# 用于在服务器上快速诊断 Whisper 连接问题
# 运行: bash test_whisper_connection.sh
echo "======================================"
echo " Whisper 服务连接诊断工具"
echo "======================================"
echo ""
WHISPER_URL="http://localhost:5001"
HEALTH_URL="${WHISPER_URL}/health"
# 测试 1: 检查端口是否被监听
echo -e "\033[33m[测试 1] 检查端口 5001 是否被监听...\033[0m"
if command -v lsof &> /dev/null; then
PORT_CHECK=$(lsof -i:5001 -t 2>/dev/null)
if [ -n "$PORT_CHECK" ]; then
echo -e "\033[32m✅ 端口 5001 已被监听\033[0m"
echo -e "\033[90m 进程ID: $PORT_CHECK\033[0m"
ps -p $PORT_CHECK -o comm= 2>/dev/null | while read proc; do
echo -e "\033[90m 进程名: $proc\033[0m"
done
else
echo -e "\033[31m❌ 端口 5001 未被监听\033[0m"
echo -e "\033[31m → Whisper 服务可能未启动\033[0m"
fi
elif command -v netstat &> /dev/null; then
PORT_CHECK=$(netstat -tuln | grep :5001)
if [ -n "$PORT_CHECK" ]; then
echo -e "\033[32m✅ 端口 5001 已被监听\033[0m"
echo -e "\033[90m $PORT_CHECK\033[0m"
else
echo -e "\033[31m❌ 端口 5001 未被监听\033[0m"
echo -e "\033[31m → Whisper 服务可能未启动\033[0m"
fi
else
echo -e "\033[90m⚠ 无法检查端口lsof/netstat 不可用)\033[0m"
fi
echo ""
# 测试 2: 测试 HTTP 连接
echo -e "\033[33m[测试 2] 测试 HTTP 连接到 ${HEALTH_URL} ...\033[0m"
if command -v curl &> /dev/null; then
HTTP_CODE=$(curl -s -o /tmp/whisper_response.txt -w "%{http_code}" --connect-timeout 5 $HEALTH_URL)
if [ "$HTTP_CODE" = "200" ]; then
echo -e "\033[32m✅ HTTP 连接成功!\033[0m"
echo -e "\033[90m 状态码: $HTTP_CODE\033[0m"
echo -e "\033[90m 响应内容: $(cat /tmp/whisper_response.txt)\033[0m"
rm -f /tmp/whisper_response.txt
elif [ "$HTTP_CODE" = "000" ]; then
echo -e "\033[31m❌ HTTP 连接失败(无法连接)\033[0m"
echo -e "\033[33m → 可能原因: Whisper 服务未启动\033[0m"
else
echo -e "\033[33m⚠ HTTP 返回状态码: $HTTP_CODE\033[0m"
echo -e "\033[90m 响应内容: $(cat /tmp/whisper_response.txt)\033[0m"
rm -f /tmp/whisper_response.txt
fi
else
echo -e "\033[90m⚠ curl 命令不可用,跳过此测试\033[0m"
fi
echo ""
# 测试 3: 检查 Whisper 进程
echo -e "\033[33m[测试 3] 检查 Whisper Python 进程...\033[0m"
WHISPER_PROCESS=$(ps aux | grep -i "whisper\|app.py" | grep -v grep)
if [ -n "$WHISPER_PROCESS" ]; then
echo -e "\033[32m✅ 找到 Whisper 相关进程\033[0m"
echo -e "\033[90m$WHISPER_PROCESS\033[0m"
else
echo -e "\033[31m❌ 未找到 Whisper 进程\033[0m"
echo -e "\033[31m → Whisper 服务可能未启动\033[0m"
fi
echo ""
# 测试 4: 检查 localhost 解析
echo -e "\033[33m[测试 4] 测试 localhost 解析...\033[0m"
if ping -c 1 localhost &> /dev/null; then
echo -e "\033[32m✅ localhost 解析正常\033[0m"
else
echo -e "\033[31m❌ localhost 解析失败\033[0m"
echo -e "\033[33m → 尝试使用 127.0.0.1 替代\033[0m"
fi
echo ""
# 测试 5: 尝试连接到具体接口
echo -e "\033[33m[测试 5] 测试 Whisper API 接口...\033[0m"
if command -v curl &> /dev/null; then
# 测试 /health 接口
echo -e "\033[90m 测试 GET ${HEALTH_URL}\033[0m"
HEALTH_RESPONSE=$(curl -s -X GET $HEALTH_URL)
if [ -n "$HEALTH_RESPONSE" ]; then
echo -e "\033[32m ✅ /health 接口响应: $HEALTH_RESPONSE\033[0m"
else
echo -e "\033[31m ❌ /health 接口无响应\033[0m"
fi
# 测试 /recognize 接口(不带文件,仅检测是否可访问)
echo -e "\033[90m 测试 POST ${WHISPER_URL}/recognize\033[0m"
RECOGNIZE_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST ${WHISPER_URL}/recognize)
if [ "$RECOGNIZE_CODE" != "000" ]; then
echo -e "\033[32m ✅ /recognize 接口可访问(状态码: $RECOGNIZE_CODE\033[0m"
else
echo -e "\033[31m ❌ /recognize 接口无法访问\033[0m"
fi
fi
echo ""
# 总结和建议
echo "======================================"
echo " 诊断总结"
echo "======================================"
echo ""
echo -e "\033[33m如果上述测试都失败请按以下步骤排查\033[0m"
echo ""
echo -e "\033[37m1. 启动 Whisper 服务:\033[0m"
echo -e "\033[90m cd <whisper_service_directory>\033[0m"
echo -e "\033[90m python3 app.py\033[0m"
echo ""
echo -e "\033[37m2. 检查 Whisper 服务日志,确认端口和监听地址\033[0m"
echo ""
echo -e "\033[37m3. 确认 Whisper 配置:\033[0m"
echo -e "\033[90m - 监听地址: 0.0.0.0 或 localhost\033[0m"
echo -e "\033[90m - 监听端口: 5001\033[0m"
echo ""
echo -e "\033[37m4. 检查防火墙:\033[0m"
echo -e "\033[90m sudo firewall-cmd --list-ports # CentOS/RHEL\033[0m"
echo -e "\033[90m sudo ufw status # Ubuntu\033[0m"
echo ""
echo -e "\033[37m5. 如果 Whisper 运行在不同端口,需要修改:\033[0m"
echo -e "\033[90m LocalWhisperService.java 中的 WHISPER_URL\033[0m"
echo ""
echo -e "\033[37m6. 测试完成后,使用以下接口进行进一步测试:\033[0m"
echo -e "\033[90m curl http://<your-server>:<port>/test/whisper/check\033[0m"
echo -e "\033[90m curl http://<your-server>:<port>/test/whisper/info\033[0m"
echo ""
echo -e "\033[37m7. 查看 Java 应用日志:\033[0m"
echo -e "\033[90m tail -f logs/sys-info.log | grep -i whisper\033[0m"
echo ""