Files

45 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 运行状态检测: 容器 + ARI REST + PJSIP trunk 探活(qualify) + 活动呼叫数
set -uo pipefail
USER="outbound"; SECRET="ari_mock_7c3f9e1b5a2d4806"
ok=0; fail=0
pass() { echo "PASS $1"; ok=$((ok+1)); }
faill() { echo "FAIL $1"; fail=$((fail+1)); }
running() { [ -n "$(docker ps -q -f name=$1)" ]; }
echo "== 容器状态"
docker ps --filter "name=ast" --format "{{.Names}}\t{{.Status}}"
echo "== ARI REST"
for n in "ast1 8088" "ast2 8089"; do
set -- $n
if running "$1"; then
c=$(curl -s -o /dev/null -w "%{http_code}" -u "$USER:$SECRET" --max-time 3 "http://127.0.0.1:$2/ari/asterisk/info")
[ "$c" = 200 ] && pass "$1 ARI /asterisk/info ($c)" || faill "$1 ARI /asterisk/info ($c)"
else
echo "SKIP $1 (未运行)"
fi
done
echo "== PJSIP trunk 探活 (OPTIONS qualify)"
for c in ast1 ast2; do
if running "$c"; then
out=$(docker exec "$c" asterisk -rx "pjsip show contacts" 2>/dev/null | grep mock-provider) || true
if echo "$out" | grep -q "Avail"; then
pass "$c trunk mock-provider Avail"
else
faill "$c trunk mock-provider (contact: ${out:-none})"
fi
fi
done
echo "== 活动呼叫 (ARI channels)"
if running ast1; then
n=$(curl -s -u "$USER:$SECRET" --max-time 3 http://127.0.0.1:8088/ari/channels | python3 -c 'import json,sys; print(len(json.load(sys.stdin)))' 2>/dev/null)
[ -n "$n" ] && pass "ast1 active channels=$n" || faill "ast1 active channels"
fi
echo
echo "result: ok=$ok fail=$fail"
[ $fail -eq 0 ]