Files
proxmox/scripts/verify/verify-static-permissions-on-all-besu-nodes.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

75 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Confirm static-nodes.json and permissions-nodes.toml on each Besu node (deploy target: /etc/besu/).
# Usage: bash scripts/verify/verify-static-permissions-on-all-besu-nodes.sh [--checksum]
# --checksum: compare content hash to canonical (requires same files on all nodes).
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
STATIC_CANONICAL="${PROJECT_ROOT}/config/besu-node-lists/static-nodes.json"
PERMS_CANONICAL="${PROJECT_ROOT}/config/besu-node-lists/permissions-nodes.toml"
CHECKSUM=false
[[ "${1:-}" = "--checksum" ]] && CHECKSUM=true
# Same VMID -> host as deploy-besu-node-lists-to-all.sh
declare -A HOST_BY_VMID
for v in 1000 1001 1002 1500 1501 1502 2101 2500 2501 2502 2503 2504 2505; do HOST_BY_VMID[$v]="${PROXMOX_R630_01:-${PROXMOX_HOST_R630_01:-192.168.11.11}}"; done
for v in 2201 2303 2401; do HOST_BY_VMID[$v]="${PROXMOX_R630_02:-${PROXMOX_HOST_R630_02:-192.168.11.12}}"; done
for v in 1003 1004 1503 1504 1505 1506 1507 1508 2102 2301 2304 2305 2306 2400 2402 2403; do HOST_BY_VMID[$v]="${PROXMOX_ML110:-${PROXMOX_HOST_ML110:-192.168.11.10}}"; done
SSH_OPTS="-o ConnectTimeout=6 -o StrictHostKeyChecking=no"
CANONICAL_STATIC_SUM=""
CANONICAL_PERMS_SUM=""
if $CHECKSUM && [[ -f "$STATIC_CANONICAL" ]] && [[ -f "$PERMS_CANONICAL" ]]; then
CANONICAL_STATIC_SUM=$(md5sum < "$STATIC_CANONICAL" 2>/dev/null | awk '{print $1}' || true)
CANONICAL_PERMS_SUM=$(md5sum < "$PERMS_CANONICAL" 2>/dev/null | awk '{print $1}' || true)
fi
echo "=== Static-nodes and permissions-nodes on each Besu node ==="
echo "Canonical: $STATIC_CANONICAL, $PERMS_CANONICAL"
if $CHECKSUM && [[ -n "$CANONICAL_STATIC_SUM" ]]; then
echo "Canonical static md5: $CANONICAL_STATIC_SUM | permissions: $CANONICAL_PERMS_SUM"
fi
echo ""
# Deploy target: /etc/besu/ only (matches deploy-besu-node-lists-to-all.sh)
STATIC_PATH="/etc/besu/static-nodes.json"
PERMS_PATH="/etc/besu/permissions-nodes.toml"
FAIL=0
for vmid in 1000 1001 1002 1003 1004 1500 1501 1502 1503 1504 1505 1506 1507 1508 2101 2102 2201 2301 2303 2304 2305 2306 2400 2401 2402 2403 2500 2501 2502 2503 2504 2505; do
host="${HOST_BY_VMID[$vmid]:-}"
[[ -z "$host" ]] && continue
run=$(ssh $SSH_OPTS root@$host "pct exec $vmid -- bash -c 's=\"\"; p=\"\"; [ -f $STATIC_PATH ] && s=\"OK\" || s=\"MISSING\"; [ -f $PERMS_PATH ] && p=\"OK\" || p=\"MISSING\"; echo \"\$s \$p\"' 2>/dev/null" || echo "SKIP SKIP")
if [[ "$run" =~ "SKIP" ]]; then
echo "VMID $vmid @ $host: unreachable or container not running"
FAIL=1
continue
fi
read -r s p <<< "$run"
if [[ "$s" = "OK" && "$p" = "OK" ]]; then
line="VMID $vmid @ $host: static=$s permissions=$p"
if $CHECKSUM && [[ -n "$CANONICAL_STATIC_SUM" ]]; then
remote_static=$(ssh $SSH_OPTS root@$host "pct exec $vmid -- cat $STATIC_PATH 2>/dev/null" | md5sum | awk '{print $1}')
remote_perms=$(ssh $SSH_OPTS root@$host "pct exec $vmid -- cat $PERMS_PATH 2>/dev/null" | md5sum | awk '{print $1}')
[[ "$remote_static" != "$CANONICAL_STATIC_SUM" ]] && line="$line static_md5=DIFF" && FAIL=1 || line="$line static_md5=OK"
[[ "$remote_perms" != "$CANONICAL_PERMS_SUM" ]] && line="$line perms_md5=DIFF" && FAIL=1 || line="$line perms_md5=OK"
fi
echo "$line"
else
echo "VMID $vmid @ $host: static=$s permissions=$p"
FAIL=1
fi
done
echo ""
if [[ $FAIL -eq 0 ]]; then
echo "All nodes have /etc/besu/static-nodes.json and /etc/besu/permissions-nodes.toml. Use --checksum to compare to canonical."
else
echo "Some nodes missing files or checksum mismatch. Deploy: bash scripts/deploy-besu-node-lists-to-all.sh"
exit 1
fi