Files
gitlab-instance-0a899031_do…/scripts/linux/probe_live_access.sh
2026-03-29 04:10:44 -05:00

79 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
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.
#!/usr/bin/env bash
# 排查「live.local refused to connect」多为 :80 无进程、服务未起、或跨机 mDNS/防火墙。
# 在设备本机执行: sudo bash scripts/linux/probe_live_access.sh
set +euo pipefail
SELF_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_TAG="probe"
# shellcheck source=scripts/linux/lib/common.sh
. "$SELF_DIR/lib/common.sh"
load_env
echo "=== Probe: refused to connect (no listener / firewall / wrong host) ==="
echo "Note: 502 = reverse proxy up but upstream dead; refused = nothing accepting TCP."
echo ""
echo "--- Host / IP ---"
echo "hostname: $(hostname 2>/dev/null)"
LAN_IP=""
LAN_IP="$(ip -4 route get 8.8.8.8 2>/dev/null | awk '{for (i=1;i<=NF;i++) if ($i=="src") {print $(i+1); exit}}')"
[ -n "$LAN_IP" ] || LAN_IP="$(hostname -I 2>/dev/null | awk '{print $1}')"
echo "guess LAN IP: ${LAN_IP:-unknown}"
echo ""
echo "--- systemd (need root for full status) ---"
for u in live-console live-edge; do
if systemctl is-active "$u.service" >/dev/null 2>&1; then
echo "$u.service: active"
else
echo "$u.service: INACTIVE — run: sudo systemctl status $u.service"
fi
done
echo ""
echo "--- TCP listeners :80 and :${PORT} ---"
if command -v ss >/dev/null 2>&1; then
ss -tlnp 2>/dev/null | grep -E ":80\\b|:${PORT}\\b" || echo "(no LISTEN on :80 or :${PORT})"
else
netstat -tlnp 2>/dev/null | grep -E ":80\\b|:${PORT}\\b" || true
fi
echo ""
echo "--- Loopback checks ---"
if curl -sf -m 5 "http://127.0.0.1:${PORT}/health" >/dev/null; then
echo "OK http://127.0.0.1:${PORT}/health"
else
echo "FAIL http://127.0.0.1:${PORT}/health → fix live-console first: journalctl -u live-console.service -n 60"
fi
code="$(curl -sS -m 5 -o /dev/null -w '%{http_code}' "http://127.0.0.1/" 2>/dev/null)"
if [ "$code" = "000" ] || [ -z "$code" ]; then
echo "FAIL http://127.0.0.1/ (port 80) — live-edge/Caddy not listening or connection refused"
echo " Try: sudo bash scripts/linux/reinstall_live_edge.sh && sudo systemctl restart live-edge.service"
elif [ "$code" = "502" ]; then
echo "WARN http://127.0.0.1/ → 502 — Caddy up but upstream :${PORT} down; restart live-console"
else
echo "OK http://127.0.0.1/ → HTTP $code"
fi
echo ""
echo "--- From your phone/PC browser ---"
echo "1) Same WiFi/LAN as this box."
echo "2) Try: http://${LAN_IP}:${PORT}/ (direct control plane, bypasses :80 and mDNS)"
echo "3) live.local needs mDNS (Android often OK; Windows may need Bonjour or use IP)."
echo "4) If OK on IP but not live.local: Avahi on this host — systemctl status avahi-daemon"
echo ""
if ! systemctl is-active live-console.service >/dev/null 2>&1; then
echo "=== Fix live-console (your case: edge OK, :${PORT} down) ==="
echo "sudo systemctl reset-failed live-console.service 2>/dev/null || true"
echo "sudo systemctl enable --now live-console.service"
echo "sleep 3 && curl -sf http://127.0.0.1:${PORT}/health && echo OK || echo still failing — logs:"
echo "sudo journalctl -u live-console.service -n 80 --no-pager"
echo ""
echo "After git pull / code update, prefer: sudo bash upgrade-live.sh"
echo "Only systemd unit changed? sudo bash refresh-live-unit.sh"
echo ""
fi