# !/bin/bash
# Copyright (C) 2018 Nicholas.A.Schembri@bamboofields.net
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
self=$(echo $0|sed 's:.*/::')
display_help(){
cat <<EOF
$self(1) User Commands
NAME
$self
SYNOPSIS
$self [OPTION]
DESCRIPTION
$self is able to be run with the following. (add more)
--cron Do not produce any output. The needed information is written to daily.log
only with --cron will data be written to daily
--envInstance=<Environment>
dev
test
qa
uat
prod
--port=<port>
tcp port
--testall
Run internal test
<expand https://github.com/ingydotnet/test-simple-bash/blob/master/lib/test-simple.bash>
<planned test-simple.bash - Simple TAP test framework for Bash>
--debugLevel=<number>
0 - none
1 - some
2 - more
-h, --help
Display
Note:
$self --debugLevel=0 --testall
Validation:
( test code is okay )
( test is valid )
EOF
}
###########################################################
cron_task(){
cmd="curl --silent --insecure -i https://www.google.com"
cmd="date"
if [ $debugLevel -gt 0 ]; then
echo "${cmd}"
fi
# sometimes it's hard for bash to parse cmd with variables
# eval "$cmd"
# export output=$(${cmd})
echo $($cmd) .
}
########################################################
timestamp=$(date +%Y.%m.%d.%H%M%S)
LOG_FILE=/var/tmp/$self.$timestamp.log
verbose=0
quiet=1
user=""
pass=""
host=""
task=""
cron=0
debugLevel=0
# get the args
while [ "$#" -gt 0 ]; do
case $1 in
-h|-\?|--help) # synopsis, then exit.
display_help
exit
;;
-q|--quiet)
quiet=1
;;
--task=?*)
task=${1#*=}
;;
--testall)
testall
exit
;;
--host=?*)
host=${1#*=} # Delete everything up to "=" and assign the remainder.
;;
--debugLevel=?*)
debugLevel=${1#*=}
#export debugLevel
;;
--cron)
cron=1
;;
--) # End of all options.
shift
break
;;
-?*)
printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
;;
*) # Default case: If no more options then break out of the loop.
break
esac
shift
done
#########################################################
if [ $debugLevel -gt 0 ]; then
cat <<EOF
Check the command line output
host: $host
user: $user
pass: ${pass}
cron: ${cron}
EOF
fi
########################
#
# turn arguments into function calls;
# the case is a simple example
case $task in
writeConfig)
write_config
;;
displayConfig)
display_config
;;
esac
# if the task is complex, call a function for more that a few rules.
# if a and b but not c
if [ $cron -gt 0 ]; then
output=$(cron_task)
[ $debugLevel -gt 0 ] && echo "${output}"
rc=$?
if [ $rc -gt 0 ]; then
echo "${output}"
exit $rc ;
fi
exit 0;
fi