commit dd5fa5bf139e2f24cd35d786e73ab14570bd72cb Author: manuel.maier Date: Tue Mar 24 20:46:32 2026 +0100 wg-client-status.sh hinzugefügt 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