From 6f8dada9e096c887a8c4a2a286e167fbd997d056 Mon Sep 17 00:00:00 2001 From: "kayos@tcp.direct" Date: Tue, 18 Oct 2022 23:09:59 -0700 Subject: [PATCH] Add run-on-all-nodes --- lib.sh | 16 ++++++++++++++++ run-on-all-nodes.sh | 19 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 lib.sh create mode 100755 run-on-all-nodes.sh diff --git a/lib.sh b/lib.sh new file mode 100644 index 0000000..0d6e3b9 --- /dev/null +++ b/lib.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +get-targets() { + cat /etc/hosts | awk '{print $NF}' | grep -v localhost | grep -v "$(uname -n | awk -F '.' '{print $1}')" | /bin/grep "[a-z]" +} + +export _ignore=("tcp.ac") +ignore() { + for iggie in "${_ignore[@]}"; do + echo "$iggie" + if [[ "$*" =~ $iggie ]]; then + true + fi + done + false +} diff --git a/run-on-all-nodes.sh b/run-on-all-nodes.sh new file mode 100755 index 0000000..335f75a --- /dev/null +++ b/run-on-all-nodes.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +source lib.sh + +echo "preparing to run $* on all nodes" + +_self="$(uname -n)" + +set +e +echo "running on self" +ssh -n "$_self" "$@" +set -e + +get-targets | while read -r line; do + if ! ignore "$line"; then + echo "running on $line" + ssh -n "$line" "$@" & + fi +done