mirror of
https://gitee.com/270580156/weiyu.git
synced 2025-12-30 10:52:26 +00:00
113 lines
3.2 KiB
Bash
Executable File
113 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# FreeSwitch ESL 连接状态监控 (本地执行)
|
|
# 持续监控连接状态变化
|
|
|
|
SERVER="14.103.165.199"
|
|
PORT="8021"
|
|
|
|
echo "========================================="
|
|
echo "FreeSwitch ESL 连接状态监控"
|
|
echo "========================================="
|
|
echo "监控服务器: $SERVER:$PORT"
|
|
echo "开始时间: $(date)"
|
|
echo "按 Ctrl+C 停止监控"
|
|
echo ""
|
|
|
|
# 初始状态检查
|
|
echo "🔍 初始状态检查:"
|
|
echo "-----------------------------------------"
|
|
|
|
# 1. 网络连通性
|
|
if ping -c 1 -W 2 $SERVER > /dev/null 2>&1; then
|
|
echo "✅ 网络连通性: 正常"
|
|
else
|
|
echo "❌ 网络连通性: 失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 2. 端口连通性
|
|
if nc -z -w 2 $SERVER $PORT 2>/dev/null; then
|
|
echo "✅ 端口连通性: 正常"
|
|
else
|
|
echo "❌ 端口连通性: 失败"
|
|
exit 1
|
|
fi
|
|
|
|
# 3. ESL协议测试
|
|
echo "🔍 ESL协议测试:"
|
|
RESPONSE=$(timeout 2 bash -c "echo '' | nc $SERVER $PORT" 2>/dev/null)
|
|
|
|
if [[ -n "$RESPONSE" ]]; then
|
|
if echo "$RESPONSE" | grep -q "rude-rejection"; then
|
|
echo "❌ ESL状态: 连接被拒绝 (ACL限制)"
|
|
echo " 响应: $(echo "$RESPONSE" | head -1)"
|
|
elif echo "$RESPONSE" | grep -q "auth/request"; then
|
|
echo "✅ ESL状态: 等待认证 (连接正常)"
|
|
echo " 响应: $(echo "$RESPONSE" | head -1)"
|
|
else
|
|
echo "⚠️ ESL状态: 未知响应"
|
|
echo " 响应: $(echo "$RESPONSE" | head -1)"
|
|
fi
|
|
else
|
|
echo "❌ ESL状态: 无响应"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== 持续监控模式 (每30秒检查一次) ==="
|
|
echo ""
|
|
|
|
# 持续监控循环
|
|
while true; do
|
|
TIMESTAMP=$(date '+%H:%M:%S')
|
|
|
|
# 测试ESL连接
|
|
RESPONSE=$(timeout 2 bash -c "echo '' | nc $SERVER $PORT" 2>/dev/null)
|
|
|
|
if [[ -n "$RESPONSE" ]]; then
|
|
if echo "$RESPONSE" | grep -q "rude-rejection"; then
|
|
echo "[$TIMESTAMP] ❌ 仍然被拒绝 - ACL限制未解除"
|
|
elif echo "$RESPONSE" | grep -q "auth/request"; then
|
|
echo "[$TIMESTAMP] ✅ 连接成功! - 收到认证请求"
|
|
echo ""
|
|
echo "🎉 FreeSwitch ESL 修复成功!"
|
|
echo "Java应用现在可以连接到FreeSwitch了"
|
|
break
|
|
else
|
|
echo "[$TIMESTAMP] ⚠️ 未知响应: $(echo "$RESPONSE" | head -1 | tr -d '\r\n')"
|
|
fi
|
|
else
|
|
echo "[$TIMESTAMP] ❌ 无响应或连接失败"
|
|
fi
|
|
|
|
sleep 30
|
|
done
|
|
|
|
echo ""
|
|
echo "=== 最终验证 ==="
|
|
|
|
# Java应用健康检查测试
|
|
if command -v curl > /dev/null 2>&1; then
|
|
echo "🔍 测试Java应用健康状态..."
|
|
|
|
# 假设Java应用在本地9003端口运行
|
|
if curl -s -f http://localhost:9003/actuator/health/freeSwitch > /dev/null 2>&1; then
|
|
echo "✅ Java应用FreeSwitch健康检查通过"
|
|
|
|
# 获取详细健康状态
|
|
echo ""
|
|
echo "📊 详细健康状态:"
|
|
curl -s http://localhost:9003/actuator/health/freeSwitch | python -m json.tool 2>/dev/null || echo "健康检查响应获取成功"
|
|
|
|
else
|
|
echo "⚠️ Java应用未运行或健康检查失败"
|
|
echo " 请启动Java应用并确保FreeSwitch模块已启用"
|
|
fi
|
|
else
|
|
echo "💡 建议: 安装curl后可测试Java应用健康状态"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== 监控完成 ==="
|
|
echo "结束时间: $(date)"
|