From 46c26360bfc0895922b4b73ab13c0a6b99c1c072 Mon Sep 17 00:00:00 2001 From: alexandrev-tibco Date: Sat, 30 Aug 2025 16:22:22 +0200 Subject: [PATCH] +1 --- manage-lxc-vm-notes.sh | 60 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/manage-lxc-vm-notes.sh b/manage-lxc-vm-notes.sh index 4c6aaaa..595701f 100755 --- a/manage-lxc-vm-notes.sh +++ b/manage-lxc-vm-notes.sh @@ -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