#!/bin/bash # --- Konfiguration --- URL="https://node-red.mgnt.vmd55888.de/vpn-status" MY_HOSTNAME=$(hostname) # 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' # --- Start --- # echo "Starte VPN Status Sync..." # Cron braucht keine Ausgaben # 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 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 # 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 < "$TMPFILE" # Temporäre Datei löschen rm -f "$TMPFILE" # echo "Fertig." # Cron braucht keine Ausgaben