Files
proxmox/scripts/fix-duplicate-enode-2401.sh

57 lines
2.5 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Fix duplicate enode for VMID 2401: fetch real enode from 2401 (on r630-02), replace .241
# entry in static-nodes.json and permissions-nodes.toml.
# Usage: bash scripts/fix-duplicate-enode-2401.sh [--dry-run]
# Requires: SSH to 192.168.11.12 (r630-02), jq.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
VMID=2401
# 2401 is on r630-02 per BESU_VMIDS_FROM_PROXMOX
HOST="${PROXMOX_R630_02:-192.168.11.12}"
STATIC="${PROJECT_ROOT}/config/besu-node-lists/static-nodes.json"
PERMS="${PROJECT_ROOT}/config/besu-node-lists/permissions-nodes.toml"
EXPECTED_IP="192.168.11.241"
DRY_RUN=false
[[ "${1:-}" = "--dry-run" ]] && DRY_RUN=true
if [[ ! -f "$STATIC" ]] || [[ ! -f "$PERMS" ]]; then
echo "ERROR: $STATIC or $PERMS not found" >&2
exit 1
fi
echo "Fetching enode for VMID $VMID from $HOST (expected IP $EXPECTED_IP)..."
ENODE=$(bash "${SCRIPT_DIR}/get-enode-for-vmid.sh" "$VMID" "$HOST" 2>/dev/null) || true
if [[ -z "$ENODE" ]]; then
echo "Could not get enode (SSH to $HOST or Besu RPC on 2401?). Run from a host with SSH to Proxmox." >&2
echo "Manual: ssh root@$HOST 'pct exec $VMID -- curl -s -X POST -H \"Content-Type: application/json\" --data \"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"admin_nodeInfo\\\",\\\"params\\\":[],\\\"id\\\":1}\" http://127.0.0.1:8545' | jq -r '.result.enode'" >&2
exit 1
fi
# Ensure enode has expected IP
ENODE=$(echo "$ENODE" | sed "s/@[0-9.]*:/@${EXPECTED_IP}:/")
echo "Enode for .241: ${ENODE:0:80}..."
# Replace .241 in static-nodes.json (JSON array)
OLD_241='enode://38e138ea5a4b0b244e4484b5c327631b5d3c849dcb188ff3d9ff0a8b6ad7edb738303a1a948888c269aa7555e5ff47d75b7b63dbd579d05580b5442b3fa0ebfc@192.168.11.241:30303'
if $DRY_RUN; then
echo "[dry-run] Would replace .241 entry in static-nodes.json and permissions-nodes.toml"
exit 0
fi
# static-nodes.json: replace the line containing @192.168.11.241
jq -r --arg new "$ENODE" '
[.[] | if . | test("@192\\.168\\.11\\.241:") then $new else . end]
' "$STATIC" > "${STATIC}.tmp" && mv "${STATIC}.tmp" "$STATIC"
# permissions-nodes.toml: replace the line containing @192.168.11.241
sed -i "s|enode://[a-f0-9]*@192\.168\.11\.241:30303|${ENODE}|g" "$PERMS"
echo "Replaced .241 entry in both files. Running verify..."
bash "${SCRIPT_DIR}/verify/verify-besu-enodes-and-ips.sh" 2>&1 || true
echo "Next: bash scripts/deploy-besu-node-lists-to-all.sh"