v0.3.5
This commit is contained in:
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# shellcheck source=common.sh
|
||||
source "$SCRIPT_DIR/common.sh"
|
||||
|
||||
IFACE="${1:-}"
|
||||
[[ -n "$IFACE" ]] || fail "Usage: sudo ./scripts/configure-gree-network.sh <interface>"
|
||||
require_root
|
||||
ip link show dev "$IFACE" >/dev/null 2>&1 || fail "Interface not found: $IFACE"
|
||||
|
||||
ADDR_LINE="$(ip -4 -o addr show dev "$IFACE" scope global | head -n1 || true)"
|
||||
[[ -n "$ADDR_LINE" ]] || fail "Interface $IFACE has no global IPv4 address"
|
||||
LOCAL_CIDR="$(awk '{print $4}' <<<"$ADDR_LINE")"
|
||||
BROADCAST="$(awk '{for (i=1;i<=NF;i++) if ($i=="brd") {print $(i+1); exit}}' <<<"$ADDR_LINE")"
|
||||
|
||||
upsert_env() {
|
||||
local key="$1" value="$2" tmp
|
||||
tmp="$(mktemp)"
|
||||
if [[ -f "$ENV_FILE" ]]; then
|
||||
awk -v key="$key" -v value="$value" '
|
||||
BEGIN { done=0 }
|
||||
$0 ~ "^" key "=" { print key "=" value; done=1; next }
|
||||
{ print }
|
||||
END { if (!done) print key "=" value }
|
||||
' "$ENV_FILE" > "$tmp"
|
||||
else
|
||||
printf '%s=%s\n' "$key" "$value" > "$tmp"
|
||||
fi
|
||||
install -o root -g root -m 0600 "$tmp" "$ENV_FILE"
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
upsert_env GREE_CONTROLLER_GREE_INTERFACE "$IFACE"
|
||||
upsert_env GREE_CONTROLLER_DISCOVERY_BROADCAST auto
|
||||
upsert_env GREE_CONTROLLER_SIMULATE false
|
||||
upsert_env GREE_CONTROLLER_AUTO_SEED false
|
||||
|
||||
say "Configured GREE interface: $IFACE ($LOCAL_CIDR)"
|
||||
if [[ -n "$BROADCAST" ]]; then
|
||||
say "Detected subnet broadcast: $BROADCAST (controller will derive it automatically)"
|
||||
fi
|
||||
|
||||
if systemctl cat "$SERVICE_NAME" >/dev/null 2>&1; then
|
||||
say "Restarting $SERVICE_NAME"
|
||||
systemctl restart "$SERVICE_NAME"
|
||||
sleep 1
|
||||
systemctl --no-pager --full status "$SERVICE_NAME" || true
|
||||
echo
|
||||
journalctl -u "$SERVICE_NAME" -n 40 --no-pager || true
|
||||
else
|
||||
warn "$SERVICE_NAME is not installed yet. Configuration was written to $ENV_FILE."
|
||||
fi
|
||||
Reference in New Issue
Block a user