#!/bin/bash # Helper script for sending command scripts to Steward. # Uses a template.yaml file and fils in the shell variables # specified within the template. # If no template file exist a default template.yaml file # will be created. # The template.yaml file can be modified to suit your own # needs # # Example: # ./clifoldertemplate.sh myship1,myship2 /bin/bash 'ls -l /etc' # # The scripts takes three arguments: # First: A single node name, or a comma separated list of more node names. # Seconds: The path to the interpreter as seen on the node the message is sent to. # Third: The actual command execute specified within single quotes. # Create template is used when no template file is found, # and will create a default template.yaml file. function createTemplate() { cat >"$PWD"/template.yaml <<EOF - toNodes: - \${node} method: cliCommand methodArgs: - ${shell} - -c - echo "--------------------\${node}----------------------" && ${command} replyMethod: fileAppend retryWait: 5 ACKTimeout: 10 retries: 1 replyACKTimeout: 10 replyRetries: 1 methodTimeout: 10 replyMethodTimeout: 10 directory: ./data/ fileName: debug.log EOF } if [ -z "$1" ]; then echo "No toNode supplied" exit 1 fi if [ -z "$2" ]; then echo "No shell path supplied" exit 1 fi if [ -z "$3" ]; then echo "No cmd supplied" exit 1 fi nodes=$1 export shell=$2 export command=$3 # Check if the template file exist if [ ! -f template.yaml ]; then echo "did not find the template file, will create default template file" createTemplate fi IFS=',' read -r -a array <<<"$nodes" for node in "${array[@]}"; do export node line=$(envsubst <template.yaml) echo "$line" >"$PWD"/msg-"$node".yaml cp msg-"$node".yaml ./readfolder done