From 8ac6b3e78fee0514b9500d9209c70ec7128f84cf Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 24 Mar 2026 22:37:55 +0100 Subject: [PATCH] wg-client-status.sh aktualisiert --- wg-client-status.sh | 49 +++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/wg-client-status.sh b/wg-client-status.sh index 55b80c7..e5bc6bc 100644 --- a/wg-client-status.sh +++ b/wg-client-status.sh @@ -4,35 +4,44 @@ URL="https://node-red.mgnt.vmd55888.de/vpn-status" MY_HOSTNAME=$(hostname) -# Pfade NETCLIENT=$(which netclient) CURL=$(which curl) -# --- Start --- -# 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 - - CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $3}' | xargs) - # 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_CLEAN" ]] && continue +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 + + echo "Verarbeite Zeile: $line" + + # Extraktion + CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $3}' | xargs) + 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'" + STATUS="false" - # Logik: Online wenn "seconds" vorkommt oder 1-5 Minuten if [[ "$HANDSHAKE" == *"seconds"* ]] || [[ "$HANDSHAKE" =~ ^[1-5]\ minute ]]; then STATUS="true" fi - # JSON senden (Wir senden CLIENT_RAW, damit das Icon im Dashboard bleibt!) - $CURL -s -X POST -H "Content-Type: application/json" \ + # 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" \ -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT_RAW\", \"status\": \"$STATUS\", \"handshake\": \"$HANDSHAKE\"}" \ - "$URL" > /dev/null -done \ No newline at end of file + "$URL") + + echo "Antwort von Node-RED: $RESPONSE" +done + +echo "--- Diagnose-Ende ---" \ No newline at end of file