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

42 lines
1.1 KiB
Bash

#!/bin/bash
URL="https://node-red.mgnt.vmd55888.de/vpn-status"
MY_HOSTNAME=$(hostname)
echo "Starte VPN Status Sync..."
# Ausgabe von netclient ping speichern
mapfile -t LINES < <(netclient ping)
for line in "${LINES[@]}"; do
# Spalte 2 = Clientname, Spalte 4 = CONNECTED
CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $2}' | xargs)
STATUS_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs)
# Zeilen ohne Clientname berspringen
[[ -z "$CLIENT_RAW" ]] && continue
# Nur Clients ber cksichtigen, die 'vpn' im Namen enthalten
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
else
STATUS=false
fi
echo "Sende: $CLIENT ^f^r $STATUS ..."
# POST an Node-RED
curl -s -X POST -H "Content-Type: application/json" \
-d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT\", \"status\": $STATUS}" \
"$URL" > /dev/null
done
echo "Fertig."