140 lines
5.5 KiB
Bash
140 lines
5.5 KiB
Bash
#!/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 ""
|