#!/usr/bin/env bash # Copy a local script to /tmp on each control-plane node and execute it there with sudo. # Usage: on-controls.sh [args...] set -uo pipefail SCRIPT="${1:?usage: $(basename "$0") [args...]}" shift [[ -f "$SCRIPT" ]] || { echo "not a file: $SCRIPT" >&2; exit 1; } CONTROLS=(pve-control adder-control game-control) NAME="$(basename "$SCRIPT")" REMOTE="/tmp/$NAME" rc=0 for node in "${CONTROLS[@]}"; do echo "========== $node ==========" if ! scp -q "$SCRIPT" "$node:$REMOTE"; then echo "(scp failed on $node)" >&2; rc=1; continue fi ssh "$node" "sudo bash $REMOTE $*; ret=\$?; rm -f $REMOTE; exit \$ret" || rc=1 done exit $rc