wg-client-status.sh aktualisiert

This commit is contained in:
2026-03-24 20:58:30 +01:00
parent dd5fa5bf13
commit b423e2dc3b

View File

@@ -1,35 +1,42 @@
#!/bin/bash #!/bin/bash
URL="http://10.10.20.225:1880/vpn-status" URL="https://node-red.mgnt.vmd55888.de/vpn-status"
MY_HOSTNAME=$(hostname) MY_HOSTNAME=$(hostname)
echo "Starte VPN Status Sync..." echo "Starte VPN Status Sync..."
# HEADER bestimmen # Ausgabe von netclient ping speichern
HEADER_LINE=$(netclient ping | grep "NAME" ) mapfile -t LINES < <(netclient ping)
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 for line in "${LINES[@]}"; do
netclient ping | grep "vpn-" | grep -v "+" | while read -r line; do # Spalte 2 = Clientname, Spalte 4 = CONNECTED
# Name aus der korrekten Spalte CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $2}' | xargs)
CLIENT=$(echo "$line" | awk -F'|' -v col=$NAME_COL '{gsub(/[^a-zA-Z0-9._-]/,"",$col); print $col}' | xargs) STATUS_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs)
# Status aus der korrekten Spalte # Zeilen ohne Clientname berspringen
RAW_STATUS=$(echo "$line" | awk -F'|' -v col=$CONNECTED_COL '{print $col}' | xargs) [[ -z "$CLIENT_RAW" ]] && continue
# true/false setzen # Nur Clients ber cksichtigen, die 'vpn' im Namen enthalten
if [[ "$RAW_STATUS" == "true" ]]; then if [[ "$CLIENT_RAW" != *vpn* ]]; then
continue
fi
# Leerzeichen/Emojis/Sonderzeichen f r Key entfernen
CLIENT=$(echo "$CLIENT_RAW" | sed 's/[^a-zA-Z0-9._-]//g')
# Status in Boolean
if [[ "$STATUS_RAW" == "true" ]]; then
STATUS=true STATUS=true
else else
STATUS=false STATUS=false
fi fi
echo "Sende: $CLIENT ^f^r $STATUS" echo "Sende: $CLIENT ^f^r $STATUS ..."
curl -s -X POST "$URL" \ # POST an Node-RED
-H "Content-Type: application/json" \ curl -s -X POST -H "Content-Type: application/json" \
-d "{\"server\":\"$MY_HOSTNAME\",\"client\":\"$CLIENT\",\"status\":$STATUS}" -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT\", \"status\": $STATUS}" \
"$URL" > /dev/null
done done
echo "Fertig." echo "Fertig."