alexandrev-tibco 2025-08-30 16:22:22 +02:00
parent ffdd0e4112
commit 46c26360bf
1 changed files with 59 additions and 1 deletions

View File

@ -51,6 +51,43 @@ check_lxc_docker_issue() {
' 2>/dev/null | tr -d '\r' | head -n1
}
# Comprueba si los puertos de Docker están escuchando (2375 API y 9023 métricas)
check_lxc_docker_ports() {
local vmid="$1"
pct exec "$vmid" -- sh -c '
is_listening_port() {
p="$1"
if command -v ss >/dev/null 2>&1; then
ss -lnt | awk "{print \$4}" | tr -d " " | grep -Eq "(^|.*:)(0\\.0\\.0\\.0|\*|\\[::\\]|::):${p}$"
else
netstat -lnt 2>/dev/null | awk "{print \$4}" | tr -d " " | grep -Eq "(^|.*:)(0\\.0\\.0\\.0|\*|\\[::\\]|::):${p}$"
fi
}
miss=""
is_listening_port 2375 || miss="${miss},api2375"
is_listening_port 9023 || miss="${miss},metrics9023"
if [ -z "$miss" ]; then
echo docker-ports:OK
else
echo docker-ports:missing${miss}
fi
' 2>/dev/null | tr -d '\r' | head -n1
}
# Estado del demonio Docker (arriba/abajo)
check_lxc_docker_daemon() {
local vmid="$1"
pct exec "$vmid" -- sh -c '
if command -v systemctl >/dev/null 2>&1; then
systemctl is-active --quiet docker && echo docker:up || echo docker:down
elif command -v rc-service >/dev/null 2>&1; then
rc-service docker status >/dev/null 2>&1 && echo docker:up || echo docker:down
else
echo docker:unknown
fi
' 2>/dev/null | tr -d '\r' | head -n1
}
collect_lxc_summary() {
local vmid="$1"
local name ip issues=""
@ -62,7 +99,11 @@ collect_lxc_summary() {
ip -4 addr 2>/dev/null | awk "/inet /{print \$2}" || true;
ifconfig 2>/dev/null | awk "/inet /{print \$2}" || true;
grep -oE "([0-9]{1,3}\\.){3}[0-9]{1,3}" /proc/net/fib_trie 2>/dev/null || true
) | tr " " "\n" | grep "^192\\.168\\.1\\." | cut -d/ -f1 | sort -u | tr "\n" " " | sed "s/ *$//"' 2>/dev/null || true)
) | tr " " "\n" \
| grep "^192\\.168\\.1\\." \
| cut -d/ -f1 \
| awk -F. '{ if ($4>0 && $4<255) print }' \
| sort -u | tr "\n" " " | sed "s/ *$//"' 2>/dev/null || true)
# Tailcale check
ts_issue=$(check_lxc_tailscale_issue "$vmid")
if [ -n "$ts_issue" ]; then
@ -73,6 +114,16 @@ collect_lxc_summary() {
if [ -n "$dk_issue" ] && [ "$dk_issue" != "OK" ]; then
issues="${issues}${issues:+;}${dk_issue}"
fi
# Docker daemon status
dk_daemon=$(check_lxc_docker_daemon "$vmid")
if [ -n "$dk_daemon" ]; then
issues="${issues}${issues:+;}${dk_daemon}"
fi
# Docker ports listening
dk_ports=$(check_lxc_docker_ports "$vmid")
if [ -n "$dk_ports" ]; then
issues="${issues}${issues:+;}${dk_ports}"
fi
if [ -n "$issues" ]; then
SUMMARY_LINES+=("LXC $vmid | ${name:-lxc-$vmid} | ${ip:-no-ip-in-range} | ${issues}")
else
@ -349,6 +400,13 @@ OVR
tailscale_note="tailscale NOT INSTALLED"
else
tailscale_note="tailscale DOWN"
# Intentar levantar tailscale si está instalado pero abajo
pct exec "$vmid" -- sh -lc 'if command -v tailscale >/dev/null 2>&1; then (sudo -n tailscale up || sudo tailscale up || tailscale up) >/dev/null 2>&1 || true; fi' || true
# Re-chequear estado tras el intento
tailscale_status=$(pct exec "$vmid" -- sh -c "$check_tailscale_status" 2>&1)
if echo "$tailscale_status" | grep -q "running"; then
tailscale_note="tailscale UP"
fi
fi
# Obtener contenedores Docker