wg-client-status.sh aktualisiert

This commit is contained in:
2026-03-24 21:29:48 +01:00
parent 63eb8a18c6
commit 1f89800702

View File

@@ -1,14 +1,22 @@
#!/bin/bash #!/bin/bash
# --- Konfiguration ---
URL="https://node-red.mgnt.vmd55888.de/vpn-status" URL="https://node-red.mgnt.vmd55888.de/vpn-status"
MY_HOSTNAME=$(hostname) MY_HOSTNAME=$(hostname)
echo "Starte VPN Status Sync..." # Vollständige Pfade für Cron
NETCLIENT=/usr/sbin/netclient # Pfad zu netclient prüfen mit 'which netclient'
CURL=/usr/bin/curl # Pfad zu curl prüfen mit 'which curl'
# Ausgabe von netclient ping speichern # --- Start ---
mapfile -t LINES < <(netclient ping) # echo "Starte VPN Status Sync..." # Cron braucht keine Ausgaben
for line in "${LINES[@]}"; do # Ausgabe von netclient ping in temporäre Datei
TMPFILE=$(mktemp)
$NETCLIENT ping > "$TMPFILE"
# Zeilenweise verarbeiten
while IFS= read -r line; do
# Spalte 2 = Clientname, Spalte 4 = CONNECTED # Spalte 2 = Clientname, Spalte 4 = CONNECTED
CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $2}' | xargs) CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $2}' | xargs)
STATUS_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs) STATUS_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs)
@@ -31,12 +39,14 @@ for line in "${LINES[@]}"; do
STATUS=false STATUS=false
fi fi
echo "Sende: $CLIENT$STATUS ..."
# POST an Node-RED # POST an Node-RED
curl -s -X POST -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 "$URL" > /dev/null
done
echo "Fertig." done < "$TMPFILE"
# Temporäre Datei löschen
rm -f "$TMPFILE"
# echo "Fertig." # Cron braucht keine Ausgaben