diff --git a/wg-client-status.sh b/wg-client-status.sh index 4c31bd5..29d2595 100644 --- a/wg-client-status.sh +++ b/wg-client-status.sh @@ -1,35 +1,42 @@ #!/bin/bash -URL="http://10.10.20.225:1880/vpn-status" +URL="https://node-red.mgnt.vmd55888.de/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}') +# Ausgabe von netclient ping speichern +mapfile -t LINES < <(netclient ping) -# 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) +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) - # Status aus der korrekten Spalte - RAW_STATUS=$(echo "$line" | awk -F'|' -v col=$CONNECTED_COL '{print $col}' | xargs) + # Zeilen ohne Clientname berspringen + [[ -z "$CLIENT_RAW" ]] && continue - # true/false setzen - if [[ "$RAW_STATUS" == "true" ]]; then + # 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" + echo "Sende: $CLIENT ^f^r $STATUS ..." - curl -s -X POST "$URL" \ - -H "Content-Type: application/json" \ - -d "{\"server\":\"$MY_HOSTNAME\",\"client\":\"$CLIENT\",\"status\":$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." \ No newline at end of file