Files
netmaker-status-script/wg-client-status.sh

35 lines
1.1 KiB
Bash

#!/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."