Skip to content
Snippets Groups Projects

WIP: apply changes suggested by shellcheck

Merged Hahn Axel (hahn) requested to merge shellcheck-update into master
1 file
+ 60
42
Compare changes
  • Side-by-side
  • Inline
+ 60
42
@@ -9,32 +9,34 @@
# - curl
# - jq
# ----------------------------------------------------------------------
#
# ah = axel.hahn@iml.unibe.ch
# 2021-03-.. init
# 2022-01-11 v0.7 ah shellcheck
# ======================================================================
_product="ICINGA PASSIVE CLIENT"
_version="0.6"
_version="0.7"
_license="GNU GPL 3.0"
_copyright='(c) 2020 Institute for Medical Education * University of Bern'
typeset -i debug=0
# source config ...
. `dirname $0`/inc_getconfig.sh
. "$( dirname $0 )/inc_getconfig.sh"
. `dirname $0`/inc_functions.sh
. `dirname $0`/inc/rest-api-client.sh
. "$( dirname $0 )/inc_functions.sh"
. "$( dirname $0 )/inc/rest-api-client.sh"
# where to find check scripts ... first directory wins
# dir_plugins="/opt/imlmonitor/client/plugins/ /usr/lib64/nagios/plugins"
# dir_cfg="/etc/icinga2-passive-client"
# dir_data="/var/tmp/icinga2-passive-client"
# dir_logs="/var/log/icinga2-passive-client"
logfile=${dir_logs}/execution.log
logfile="${dir_logs}/execution.log"
ch=`dirname $0`/inc/confighandler.sh
myHost=`hostname -f`
ch="$( dirname $0 )/inc/confighandler.sh"
myHost=$(hostname -f)
# for loop mode only: max. random sleep time
typeset -i sleeptime=30
@@ -68,8 +70,8 @@ function findCheckScript(){
local _script=$1
for mydir in ${dir_plugins}
do
if [ -x ${mydir}/${_script} ]; then
echo ${mydir}/${_script}
if [ -x "${mydir}/${_script}" ]; then
echo "${mydir}/${_script}"
fi
done | head -1
}
@@ -77,7 +79,7 @@ function findCheckScript(){
# helper used function in loopChecks
# get a snapshot of a few files
function _getFileSnapshot(){
ls -l `dirname $0`/* ${dir_cfg}/*
ls -l $(dirname $0)/* ${dir_cfg}/*
}
@@ -96,30 +98,34 @@ function loopChecks(){
# exit 1
# fi
local lockfile="${dir_data}/loop.pid"
local snapShotStart=${dir_data}/`basename $0`-start.fingerprint
local snapShotCurrent=${dir_data}/`basename $0`-last.fingerprint
local lockfile
lockfile="${dir_data}/loop.pid"
local snapShotStart
snapShotStart=${dir_data}/$(basename $0)-start.fingerprint
local snapShotCurrent
snapShotCurrent=${dir_data}/$(basename $0)-last.fingerprint
if [ -f "${lockfile}" ]; then
local lockpid=`cat "${lockfile}" | cut -f 2 -d "-" | cut -f 4 -d " " | grep "[0-9]"`
ps -f --pid $lockpid | grep "`basename $0`" | grep loop >/dev/null
local lockpid
lockpid=$(cat "${lockfile}" | cut -f 2 -d "-" | cut -f 4 -d " " | grep "[0-9]")
ps -f --pid "$lockpid" | grep "$(basename $0)" | grep loop >/dev/null
if [ $? -eq 0 ]; then
_log "ABORT: Loop seems to run already. See process with PID $lockpid"
echo
ps -f --pid $lockpid
ps -f --pid "$lockpid"
echo
exit 0
fi
fi
_log "---------- starting in a permanent loop"
echo "Serviceloop started `date` - process id $$" > "${lockfile}"
echo "Serviceloop started $(date) - process id $$" > "${lockfile}"
if [ $? -ne 0 ]; then
_log "ABORT: Lock file is not writable ${lockfile}."
ls -l "${lockfile}"
exit 1
fi
_getFileSnapshot>${snapShotStart}
_getFileSnapshot>"${snapShotStart}"
if [ $? -ne 0 ]; then
_log "ABORT: Snapshot file is not writable ${snapShotStart}."
ls -l "${snapShotStart}"
@@ -157,28 +163,33 @@ function loopChecks(){
#
function processAllChecks(){
# loop over all defined checks
typeset -i local iChecksTotal=`getChecks | wc -l`
typeset -i local iCounter=0
typeset -i local iChecksTotal
iChecksTotal=$(getChecks | wc -l)
typeset -i local iCounter
iCounter=0
_rc_all=0
typeset -i local iLoopStart=`_getUnixTs`
typeset -i local iLoopStart
iLoopStart=$(_getUnixTs)
_log ""
_log "------ looping over all checks"
getChecks
echo
for myconfig in `getChecks`
for myconfig in $(getChecks)
do
iCounter=$iCounter+1
_log "--- processing [$iCounter of $iChecksTotal] $myconfig"
processCheck $myconfig
processCheck "$myconfig"
_log ""
echo
echo ----------------------------------------------------------------------
echo
done
typeset -i local iLoopEnd=`_getUnixTs`
typeset -i local iLoopTime=$iLoopEnd-$iLoopStart
typeset -i local iLoopEnd
iLoopEnd=$(_getUnixTs)
typeset -i local iLoopTime
iLoopTime=$iLoopEnd-$iLoopStart
_log "------ loop done - needed $iLoopTime sec - rc=$_rc_all"
}
@@ -192,9 +203,9 @@ function processAllChecks(){
# param string full path of a config file
#
function _parseCheckConfig(){
local _myconfig=$1
local _myconfig="$1"
if [ ! -r $_myconfig ]; then
if [ ! -r "$_myconfig" ]; then
echo "ERROR: config file is not readable [$_myconfig]"
exit 1
fi
@@ -204,13 +215,14 @@ function _parseCheckConfig(){
# command=check_cronstatus -param1 -param2
# interval=60
checkName=`cat $_myconfig | grep ^checkname= | cut -f 2 -d "="`
checkCommand=`cat $_myconfig | grep ^command= | cut -f 2 -d "="`
checkInterval=`cat $_myconfig | grep ^interval= | cut -f 2 -d "="`
checkName=$(cat $_myconfig | grep ^checkname= | cut -f 2 -d "=")
checkCommand=$(cat $_myconfig | grep ^command= | cut -f 2 -d "=")
checkInterval=$(cat $_myconfig | grep ^interval= | cut -f 2 -d "=")
}
# actions for icinga host
# param string action; "get" only
function icingaHost(){
local _logPrefix="${myHost} :: API |"
local _apiRequest=objects/hosts/${myHost}
@@ -246,16 +258,20 @@ function icingaHost(){
}
# for check on the beginning of the script:
# execute a check only if the host exists on icinga2
# global string myHost
# global string dir_data
function icingaHostMustExist(){
_log "check if the host [${myHost}] exists on Icinga ..."
icingaHost get
if [ $? -ne 0 ]; then
http.getResponse
if [ "`http.getStatuscode`" = "000" ]; then
if [ "$(http.getStatuscode)" = "000" ]; then
_log "ERROR: Unable to reach the Icinga node. Stopping script current monitoring actions."
exit 1
fi
_log "ERROR: host object for ${myHost} is not available on Icinga service (yet) - Status: `http.getStatuscode`"
_log "ERROR: host object for ${myHost} is not available on Icinga service (yet) - Status: $(http.getStatuscode)"
echo
echo "ABORTING"
echo
@@ -263,7 +279,7 @@ function icingaHostMustExist(){
echo "- you must create the host on director (check director-cli.sh --hr)"
echo "- the director must deploy the host to icinga daemon"
echo
rm -f ${dir_data}/service__check* 2>/dev/null
rm -f "${dir_data}"/service__check* 2>/dev/null
exit 1
fi
_log "OK, found."
@@ -280,9 +296,10 @@ function processCheck(){
local _myconfig=$1
local _force=$2
typeset -i local iCheckStart=`_getUnixTs`
typeset -i local iCheckStart
iCheckStart=$(_getUnixTs)
_parseCheckConfig ${_myconfig}
_parseCheckConfig "${_myconfig}"
local _logPrefix="${checkName} |"
_log "${_logPrefix} INFO: every ${checkInterval} sec: ${checkCommand}"
@@ -295,12 +312,13 @@ function processCheck(){
# --- check last run ... if never or > $interval then execute
doRun=0
if [ ! -f $_outfile ]; then
if [ ! -f "$_outfile" ]; then
_log "${_logPrefix} INFO: Never executed before"
doRun=1
else
# typeset -i iAgeLastRun=$(($(date +%s) - $(date +%s -r "$_outfile")))
typeset -i iAgeLastRun=`_getFileAge "$_outfile"`
typeset -i iAgeLastRun
iAgeLastRun=$(_getFileAge "$_outfile")
_log "${_logPrefix} INFO: last run was $iAgeLastRun sec ago ... vs Interval = $checkInterval ... sleeptime = $sleeptime"
iAgeLastRun=$iAgeLastRun+$sleeptime
if [ $iAgeLastRun -gt $checkInterval ]; then
@@ -314,12 +332,12 @@ function processCheck(){
fi
if [ $doRun -ne 0 ]; then
myscript=`echo $checkCommand | cut -f 1 -d " "`
myFullscript=`findCheckScript $myscript`
myscript=$(echo "$checkCommand" | cut -f 1 -d " ")
myFullscript=$(findCheckScript "$myscript")
if [ -z "$myFullscript" ]; then
_log "${_logPrefix} ERROR: $myscript was not found in any plugin dir"
else
myparams=`echo $checkCommand | grep " " | cut -f 2- -d " "`
myparams=$( echo $checkCommand | grep " " | cut -f 2- -d " " )
#
# --- this executes the check plugin ...
Loading