From f573e587d380ad942a4d26aaf4aa437dce451f31 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 24 Mar 2026 22:39:57 +0100 Subject: [PATCH] wg-client-status.sh aktualisiert --- wg-client-status.sh | 42 ++++++++++++++---------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/wg-client-status.sh b/wg-client-status.sh index e5bc6bc..45f680e 100644 --- a/wg-client-status.sh +++ b/wg-client-status.sh @@ -3,45 +3,31 @@ # --- Konfiguration --- URL="https://node-red.mgnt.vmd55888.de/vpn-status" MY_HOSTNAME=$(hostname) - NETCLIENT=$(which netclient) CURL=$(which curl) -echo "--- Diagnose-Start ---" -echo "Nutze netclient unter: $NETCLIENT" -echo "Sende an: $URL" - -# Teste ob netclient peers überhaupt etwas ausgibt -PEERS_OUTPUT=$($NETCLIENT peers) -if [ -z "$PEERS_OUTPUT" ]; then - echo "FEHLER: 'netclient peers' gibt nichts zurück!" - exit 1 -fi - -# Jetzt die eigentliche Schleife -echo "$PEERS_OUTPUT" | grep -E "vpn|mdvpn" | while read -r line; do +# --- Logik --- +$NETCLIENT peers | grep -E "vpn|mdvpn" | while read -r line; do - echo "Verarbeite Zeile: $line" + # Basierend auf deiner Diagnose: + # Spalte 4 ist der Name, Spalte 7 der Handshake + CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs) + HANDSHAKE=$(echo "$line" | awk -F'|' '{print $7}' | xargs) - # Extraktion - CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $3}' | xargs) + # Client-Name säubern (Icons entfernen) für den Abgleich, falls nötig CLIENT_CLEAN=$(echo "$CLIENT_RAW" | sed 's/[^a-zA-Z0-9._-]//g') - HANDSHAKE=$(echo "$line" | awk -F'|' '{print $6}' | xargs) - echo "Gefunden: Client='$CLIENT_CLEAN', Handshake='$HANDSHAKE'" + # Falls CLIENT_RAW leer ist, überspringen + [[ -z "$CLIENT_RAW" ]] && continue STATUS="false" + # Logik: Online wenn "seconds" vorkommt oder 1-5 Minuten if [[ "$HANDSHAKE" == *"seconds"* ]] || [[ "$HANDSHAKE" =~ ^[1-5]\ minute ]]; then STATUS="true" fi - # Der CURL Befehl mit sichtbarer Antwort - echo "Sende POST..." - RESPONSE=$($CURL -s -w "\nHTTP-Status: %{http_code}\n" -X POST -H "Content-Type: application/json" \ + # POST an Node-RED + $CURL -s -X POST -H "Content-Type: application/json" \ -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT_RAW\", \"status\": \"$STATUS\", \"handshake\": \"$HANDSHAKE\"}" \ - "$URL") - - echo "Antwort von Node-RED: $RESPONSE" -done - -echo "--- Diagnose-Ende ---" \ No newline at end of file + "$URL" > /dev/null +done \ No newline at end of file