Files
proxmox/scripts/extract-enodes-from-keys.sh
defiQUG fbda1b4beb
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
docs: Ledger Live integration, contract deploy learnings, NEXT_STEPS updates
- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands
- CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround
- CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check
- NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere
- MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates
- LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 15:46:57 -08:00

70 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Extract enode addresses from generated node keys
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
source "$PROJECT_ROOT/config/ip-addresses.conf"
get_host_for_vmid() {
local vmid=$1
if [[ "$vmid" =~ ^(1505|1506|1507|1508)$ ]]; then
echo "${PROXMOX_HOST_ML110}"
elif [[ "$vmid" =~ ^(2500|2501|2502|2503|2504|2505)$ ]]; then
echo "${PROXMOX_HOST_R630_01}"
else
echo "${PROXMOX_HOST_R630_01}"
fi
}
extract_enode() {
local vmid=$1
local ip=$2
local hostname=$3
local host=$(get_host_for_vmid $vmid)
# Try to get public key from private key file
local pubkey=$(ssh -o StrictHostKeyChecking=no root@${host} "pct exec $vmid -- bash -c '
if [ -f /data/besu/key ]; then
# Try using openssl to extract public key
openssl ec -in /data/besu/key -pubout -outform DER 2>/dev/null | tail -c 65 | xxd -p -c 0 2>/dev/null || \
# Try using Besu if available
find /opt -name besu -type f 2>/dev/null | head -1 | xargs -I {} {} public-key export --node-private-key-file=/data/besu/key 2>/dev/null | sed \"s/^0x//\" || \
echo \"\"
fi
'" 2>/dev/null | tr -d '\n' | head -c 128)
if [[ -n "$pubkey" && ${#pubkey} -ge 64 ]]; then
echo "$vmid|$hostname|$ip|enode://${pubkey}@${ip}:30303"
else
echo "$vmid|$hostname|$ip|PENDING"
fi
}
echo "Extracting enode addresses from node keys..."
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 vmid in 1505 1506 2500 2501 2502 1507 1508 2503 2504 2505; do
case $vmid in
1505) extract_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" ;;
1506) extract_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" ;;
2500) extract_enode 2500 "${IP_SERVICE_172:-${IP_SERVICE_172:-192.168.11.172}}" "besu-rpc-alltra-1" ;;
2501) extract_enode 2501 "${IP_SERVICE_173:-${IP_SERVICE_173:-192.168.11.173}}" "besu-rpc-alltra-2" ;;
2502) extract_enode 2502 "${IP_SERVICE_174:-${IP_SERVICE_174:-192.168.11.174}}" "besu-rpc-alltra-3" ;;
1507) extract_enode 1507 "${IP_RPC_244:-${IP_RPC_244:-${IP_RPC_244:-192.168.11.244}}}" "besu-sentry-hybx-1" ;;
1508) extract_enode 1508 "${IP_RPC_245:-${IP_RPC_245:-${IP_RPC_245:-192.168.11.245}}}" "besu-sentry-hybx-2" ;;
2503) extract_enode 2503 "${IP_RPC_246:-${IP_RPC_246:-${IP_RPC_246:-192.168.11.246}}}" "besu-rpc-hybx-1" ;;
2504) extract_enode 2504 "${IP_RPC_247:-${IP_RPC_247:-${IP_RPC_247:-192.168.11.247}}}" "besu-rpc-hybx-2" ;;
2505) extract_enode 2505 "${IP_RPC_248:-${IP_RPC_248:-${IP_RPC_248:-192.168.11.248}}}" "besu-rpc-hybx-3" ;;
esac
done
} > "$ENODE_LIST"
echo "Enode collection saved to: $ENODE_LIST"
cat "$ENODE_LIST"