#!/usr/bin/env bash # Collect enode addresses from all new Besu nodes set -euo pipefail # Load IP configuration 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 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" BLUE='\033[0;34m' GREEN='\033[0;32m' NC='\033[0m' log() { echo -e "${BLUE}[$(date +'%H:%M:%S')]${NC} $1"; } success() { echo -e "${GREEN}[✓]${NC} $1"; } collect_enode() { local vmid=$1 local ip=$2 local hostname=$3 log "Collecting enode from $vmid ($hostname)..." local enode=$(pct exec $vmid -- bash -c ' if [ -f /data/besu/NODE_ID ]; then NODE_ID=$(cat /data/besu/NODE_ID) echo "enode://${NODE_ID}@'"$ip"':30303" else echo "PENDING" fi ' 2>/dev/null || echo "ERROR") echo "$vmid|$hostname|$ip|$enode" } log "===================================" log "Collecting Enodes from All New Nodes" log "===================================" echo "" ENODE_DIR=$(mktemp -d) log "ALLTRA nodes..." collect_enode 1505 "${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}3" "besu-sentry-alltra-1" > "$ENODE_DIR/1505.txt" & collect_enode 1506 "${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-${IP_SERVICE_21:-192.168.11.21}}}}}4" "besu-sentry-alltra-2" > "$ENODE_DIR/1506.txt" & collect_enode 2500 "${IP_SERVICE_172:-${IP_SERVICE_172:-192.168.11.172}}" "besu-rpc-alltra-1" > "$ENODE_DIR/2500.txt" & collect_enode 2501 "${IP_SERVICE_173:-${IP_SERVICE_173:-192.168.11.173}}" "besu-rpc-alltra-2" > "$ENODE_DIR/2501.txt" & collect_enode 2502 "${IP_SERVICE_174:-${IP_SERVICE_174:-192.168.11.174}}" "besu-rpc-alltra-3" > "$ENODE_DIR/2502.txt" & log "HYBX nodes..." collect_enode 1507 "${IP_RPC_244:-${IP_RPC_244:-${IP_RPC_244:-192.168.11.244}}}" "besu-sentry-hybx-1" > "$ENODE_DIR/1507.txt" & collect_enode 1508 "${IP_RPC_245:-${IP_RPC_245:-${IP_RPC_245:-192.168.11.245}}}" "besu-sentry-hybx-2" > "$ENODE_DIR/1508.txt" & collect_enode 2503 "${IP_RPC_246:-${IP_RPC_246:-${IP_RPC_246:-192.168.11.246}}}" "besu-rpc-hybx-1" > "$ENODE_DIR/2503.txt" & collect_enode 2504 "${IP_RPC_247:-${IP_RPC_247:-${IP_RPC_247:-192.168.11.247}}}" "besu-rpc-hybx-2" > "$ENODE_DIR/2504.txt" & collect_enode 2505 "${IP_RPC_248:-${IP_RPC_248:-${IP_RPC_248:-192.168.11.248}}}" "besu-rpc-hybx-3" > "$ENODE_DIR/2505.txt" & echo "" log "Waiting for collections..." wait echo "" echo "==========================================" for file in "$ENODE_DIR"/*.txt; do cat "$file" done ENODE_LIST="$PROJECT_ROOT/ENODE_COLLECTION_$(date +%Y%m%d_%H%M%S).txt" { echo "# Enode Collection Report" echo "# Generated: $(date)" echo "# VMID | Hostname | IP | Enode" echo "==========================================" for file in "$ENODE_DIR"/*.txt; do cat "$file" done } > "$ENODE_LIST" success "Enode collection saved to: $ENODE_LIST" rm -rf "$ENODE_DIR"