#!/bin/bash # --- KONFIGURATION --- URL="https://node-red.mgnt.vmd55888.de/vpn-status" MY_HOSTNAME=$(hostname) # WICHTIG: Im Cron sind Pfade oft limitiert, daher suchen wir sie uns: NETCLIENT=$(which netclient || echo "/usr/sbin/netclient") CURL=$(which curl || echo "/usr/bin/curl") # --- DOPPEL-CHECK --- # Falls netclient nicht gefunden wird oder der Server gerade rebootet [ ! -x "$NETCLIENT" ] && exit 1 # --- LOGIK --- # Wir holen die Peers. # "sudo" ist oft nötig, wenn das Script als normaler User im Cron läuft! $NETCLIENT peers | grep -E "vpn|mdvpn" | while read -r line; do # Spalte 4: Name, Spalte 7: Handshake CLIENT_RAW=$(echo "$line" | awk -F'|' '{print $4}' | xargs) HANDSHAKE=$(echo "$line" | awk -F'|' '{print $7}' | xargs) [[ -z "$CLIENT_RAW" ]] && continue STATUS="false" if [[ "$HANDSHAKE" == *"seconds"* ]] || [[ "$HANDSHAKE" =~ ^[1-5]\ minute ]]; then STATUS="true" fi # Daten abfeuern $CURL -s -X POST -H "Content-Type: application/json" \ -d "{\"server\": \"$MY_HOSTNAME\", \"client\": \"$CLIENT_RAW\", \"status\": \"$STATUS\", \"handshake\": \"$HANDSHAKE\"}" \ "$URL" > /dev/null done