From dd5fa5bf139e2f24cd35d786e73ab14570bd72cb Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 24 Mar 2026 20:46:32 +0100 Subject: [PATCH] =?UTF-8?q?wg-client-status.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wg-client-status.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 wg-client-status.sh diff --git a/wg-client-status.sh b/wg-client-status.sh new file mode 100644 index 0000000..4c31bd5 --- /dev/null +++ b/wg-client-status.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +URL="http://10.10.20.225:1880/vpn-status" +MY_HOSTNAME=$(hostname) + +echo "Starte VPN Status Sync..." + +# HEADER bestimmen +HEADER_LINE=$(netclient ping | grep "NAME" ) +NAME_COL=$(echo "$HEADER_LINE" | awk -F'|' '{for(i=1;i<=NF;i++) if($i ~ /NAME/) print i}') +CONNECTED_COL=$(echo "$HEADER_LINE" | awk -F'|' '{for(i=1;i<=NF;i++) if($i ~ /CONNECTED/) print i}') + +# Alle Zeilen mit vpn-Clients, ohne Trennlinien +netclient ping | grep "vpn-" | grep -v "+" | while read -r line; do + # Name aus der korrekten Spalte + CLIENT=$(echo "$line" | awk -F'|' -v col=$NAME_COL '{gsub(/[^a-zA-Z0-9._-]/,"",$col); print $col}' | xargs) + + # Status aus der korrekten Spalte + RAW_STATUS=$(echo "$line" | awk -F'|' -v col=$CONNECTED_COL '{print $col}' | xargs) + + # true/false setzen + if [[ "$RAW_STATUS" == "true" ]]; then + STATUS=true + else + STATUS=false + fi + + echo "Sende: $CLIENT ^f^r $STATUS" + + curl -s -X POST "$URL" \ + -H "Content-Type: application/json" \ + -d "{\"server\":\"$MY_HOSTNAME\",\"client\":\"$CLIENT\",\"status\":$STATUS}" +done + +echo "Fertig." \ No newline at end of file