Analogiczne rozwiązanie z poprzedniego artykułu dla Zoraxy. W tym przypadku trzeba działać na pliku konfiguracyjnym json.
#!/bin/bash
REMOTE="..................."
SAVE_IP_FILE="/opt/zoraxy/conf/access/last_remote_ip.txt"
ACCESS_FILE="/opt/zoraxy/conf/access/default.json"
LTE_LABEL="D......"
NOWY_IP=$(ssh $REMOTE "curl -s --max-time 8 ifconfig.me")
[[ -z "$NOWY_IP" || "$NOWY_IP" =~ [^0-9.] ]] && { echo "Nie pobrano IP"; exit 1; }
echo "Zdalny IP: $NOWY_IP"
if [[ -f "$SAVE_IP_FILE" ]]; then
LAST_IP=$(cat "$SAVE_IP_FILE" | tr -d '[:space:]')
else
LAST_IP=""
fi
if [[ -n "$LAST_IP" && "$LAST_IP" != "$NOWY_IP" ]]; then
echo "Usuwam stare IP z whitelisty: $LAST_IP"
jq --arg ip "$LAST_IP" 'del(.WhiteListIP[$ip])' "$ACCESS_FILE" > "${ACCESS_FILE}.tmp" \
&& mv "${ACCESS_FILE}.tmp" "$ACCESS_FILE"
fi
echo "Dodaję/aktualizuję IP: $NOWY_IP ($LTE_LABEL)"
jq ".WhiteListIP.\"$NOWY_IP\" = \"$LTE_LABEL\"" "$ACCESS_FILE" > "${ACCESS_FILE}.tmp" \
&& mv "${ACCESS_FILE}.tmp" "$ACCESS_FILE" \
|| { echo "BŁĄD przy zapisie JSON!"; exit 1; }
echo "$NOWY_IP" > "$SAVE_IP_FILE"
echo "Gotowe! Restartuję Zoraxy..."
systemctl restart zoraxy || echo "Nie udało się zrestartować Zoraxy (może nie działa jako serwis?)"
echo "Wszystko OK – IP $NOWY_IP jest na whiteliscie"