From 1fd7a227ae553d1eba383cc1a8805d5554f51606 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 24 Mar 2026 22:26:53 +0100 Subject: [PATCH] wg-client-status.sh aktualisiert --- wg-client-status.sh | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/wg-client-status.sh b/wg-client-status.sh index 78971c9..55b80c7 100644 --- a/wg-client-status.sh +++ b/wg-client-status.sh @@ -4,34 +4,35 @@ URL="https://node-red.mgnt.vmd55888.de/vpn-status" MY_HOSTNAME=$(hostname) -# Pfade (bitte mit 'which' prüfen, falls es nicht klappt) +# Pfade NETCLIENT=$(which netclient) CURL=$(which curl) # --- Start --- -# Wir holen die Liste der Peers -# Die Spalten bei 'netclient peers' sind: -# 1:Index | 2:Network | 3:Hostname | 6:Last Handshake -$($NETCLIENT peers) | grep -E "vpn|mdvpn" | while read -r line; do +# Wir rufen netclient peers auf und filtern direkt die Zeilen mit vpn/mdvpn +$NETCLIENT peers | grep -E "vpn|mdvpn" | while read -r line; do + + # Extraktion der Spalten (basierend auf deiner Tabelle): + # Spalte 3: Hostname + # Spalte 6: Last Handshake - # 1. Namen extrahieren (Spalte 3) und Emojis/Spaces killen CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $3}' | xargs) - CLIENT=$(echo "$CLIENT_RAW" | sed 's/[^a-zA-Z0-9._-]//g') + # Wir lassen das Icon im CLIENT_RAW für das Dashboard, + # säubern aber den Namen für den Key + CLIENT_CLEAN=$(echo "$CLIENT_RAW" | sed 's/[^a-zA-Z0-9._-]//g') - [[ -z "$CLIENT" ]] && continue + [[ -z "$CLIENT_CLEAN" ]] && continue - # 2. Handshake extrahieren (Spalte 6) HANDSHAKE=$(echo "$line" | awk -F'|' '{print $6}' | xargs) - # 3. Logik: Online wenn Handshake < 5 Min oder "seconds" - STATUS=false + STATUS="false" + # Logik: Online wenn "seconds" vorkommt oder 1-5 Minuten if [[ "$HANDSHAKE" == *"seconds"* ]] || [[ "$HANDSHAKE" =~ ^[1-5]\ minute ]]; then - STATUS=true + STATUS="true" fi - # 4. POST an Node-RED - # Wir senden "handshake" mit, damit du es (optional) sehen kannst + # JSON senden (Wir senden CLIENT_RAW, damit das Icon im Dashboard bleibt!) $CURL -s -X POST -H "Content-Type: application/json" \ - -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT\", \"status\": $STATUS, \"handshake\": \"$HANDSHAKE\"}" \ + -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT_RAW\", \"status\": \"$STATUS\", \"handshake\": \"$HANDSHAKE\"}" \ "$URL" > /dev/null done \ No newline at end of file