22 lines
699 B
Bash
Executable file
22 lines
699 B
Bash
Executable file
#!/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 <local-script> [args...]
|
|
set -uo pipefail
|
|
|
|
SCRIPT="${1:?usage: $(basename "$0") <local-script> [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
|