1
0
Fork 0
mirror of https://github.com/postmannen/ctrl.git synced 2024-12-14 12:37:31 +00:00
ctrl/scripts/clifoldertemplate.sh

78 lines
1.8 KiB
Bash
Raw Normal View History

#!/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