From 16414a66b55037a959d6de1b43044ff9db145992 Mon Sep 17 00:00:00 2001 From: alexandrev-tibco Date: Sat, 30 Aug 2025 10:22:41 +0200 Subject: [PATCH] +1 --- manage-lxc-vm-notes.sh | 45 +++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/manage-lxc-vm-notes.sh b/manage-lxc-vm-notes.sh index 29dd540..4ac9c17 100755 --- a/manage-lxc-vm-notes.sh +++ b/manage-lxc-vm-notes.sh @@ -55,7 +55,14 @@ collect_lxc_summary() { local vmid="$1" local name ip issues="" name=$(pct exec "$vmid" -- sh -c "hostname -s 2>/dev/null || cat /etc/hostname 2>/dev/null || echo lxc-$vmid" 2>/dev/null | head -n1 | tr -d '\r') - ip=$(pct exec "$vmid" -- sh -c "(hostname -I 2>/dev/null || ip -4 -o addr show | awk '{print \\\$4}' | cut -d/ -f1) | tr ' ' '\n' | grep '^192\\.168\\.1\\.' | tr '\n' ' ' | sed 's/ *$//'" 2>/dev/null || true) + ip=$(pct exec "$vmid" -- sh -c ' + ( + hostname -I 2>/dev/null || true; + ip -4 -o addr 2>/dev/null | awk "{print \$4}" || true; + 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) # Tailcale check ts_issue=$(check_lxc_tailscale_issue "$vmid") if [ -n "$ts_issue" ]; then @@ -256,13 +263,21 @@ OVR } wait_for_endpoints() { - echo "[INFO] Esperando endpoints 0.0.0.0:2375 y 0.0.0.0:9023..." + echo "[INFO] Esperando endpoints TCP 2375 y 9023 (IPv4/IPv6)..." + 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 + } EP=0 LIMIT=${DOCKER_WAIT_SECONDS:-30} for i in $(seq 1 "$LIMIT"); do API_OK=0; MET_OK=0 - if ss -lnt 2>/dev/null | grep -q ":2375 "; then API_OK=1; fi - if ss -lnt 2>/dev/null | grep -q ":9023 "; then MET_OK=1; fi + is_listening_port 2375 && API_OK=1 + is_listening_port 9023 && MET_OK=1 if [ $API_OK -eq 1 ] && [ $MET_OK -eq 1 ]; then EP=1; break; fi sleep 1 done @@ -276,19 +291,27 @@ OVR check_listeners() { echo "[INFO] Comprobando puertos en escucha para Docker..." if command -v ss >/dev/null 2>&1; then - ss -lnt | awk "{print}" + ss -lnt | awk '{print}' elif command -v netstat >/dev/null 2>&1; then netstat -lnt || true fi - if ss -lnt 2>/dev/null | grep -q ":2375 "; then - echo "[INFO] API Docker TCP escuchando en 0.0.0.0:2375" + 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 + } + if is_listening_port 2375; then + echo "[INFO] API Docker TCP escuchando en 2375 (IPv4/IPv6)" else - echo "[WARN] API Docker TCP NO detectada en 0.0.0.0:2375" + echo "[WARN] API Docker TCP NO detectada en 2375" fi - if ss -lnt 2>/dev/null | grep -q ":9023 "; then - echo "[INFO] Métricas Docker escuchando en 0.0.0.0:9023" + if is_listening_port 9023; then + echo "[INFO] Métricas Docker escuchando en 9023 (IPv4/IPv6)" else - echo "[WARN] Métricas Docker NO detectadas en 0.0.0.0:9023" + echo "[WARN] Métricas Docker NO detectadas en 9023" fi }