Fixed (linter) issues

This commit is contained in:
patvdv 2018-10-27 22:16:08 +02:00
parent 1249e2ccd6
commit f27d7aa07b
54 changed files with 458 additions and 376 deletions

View File

@ -37,7 +37,7 @@
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
# define the version (YYYY-MM-DD) # define the version (YYYY-MM-DD)
typeset -r SCRIPT_VERSION="2018-07-12" typeset -r SCRIPT_VERSION="2018-10-28"
# location of parent directory containing KSH functions/HC plugins # location of parent directory containing KSH functions/HC plugins
typeset -r FPATH_PARENT="/opt/hc/lib" typeset -r FPATH_PARENT="/opt/hc/lib"
# location of custom HC configuration files # location of custom HC configuration files
@ -54,13 +54,18 @@ typeset -r EXEC_USER="root"
# read-only settings (but should not be changed) # read-only settings (but should not be changed)
typeset -r SCRIPT_NAME="$(basename $0)" typeset -r SCRIPT_NAME="$(basename $0)"
typeset -r SCRIPT_DIR="$(dirname $0)" typeset -r SCRIPT_DIR="$(dirname $0)"
# shellcheck disable=SC2034
typeset -r HOST_NAME="$(hostname)" typeset -r HOST_NAME="$(hostname)"
typeset -r OS_NAME="$(uname -s)" typeset -r OS_NAME="$(uname -s)"
typeset -r LOCK_DIR="${TMP_DIR}/.${SCRIPT_NAME}.lock" typeset -r LOCK_DIR="${TMP_DIR}/.${SCRIPT_NAME}.lock"
typeset -r HC_MSG_FILE="${TMP_DIR}/.${SCRIPT_NAME}.hc.msg.$$" # plugin messages files typeset -r HC_MSG_FILE="${TMP_DIR}/.${SCRIPT_NAME}.hc.msg.$$" # plugin messages files
# shellcheck disable=SC2034
typeset -r LOG_SEP="|" # single character only typeset -r LOG_SEP="|" # single character only
# shellcheck disable=SC2034
typeset -r MSG_SEP="%" # single character only typeset -r MSG_SEP="%" # single character only
# shellcheck disable=SC2034
typeset -t NUM_LOG_FIELDS=6 # current number of fields in $HC_LOG + 1 typeset -t NUM_LOG_FIELDS=6 # current number of fields in $HC_LOG + 1
# shellcheck disable=SC2034
typeset -r MAGIC_QUOTE="!_!" # magic quote typeset -r MAGIC_QUOTE="!_!" # magic quote
typeset -r LOG_DIR="/var/opt/hc" typeset -r LOG_DIR="/var/opt/hc"
typeset -r LOG_FILE="${LOG_DIR}/${SCRIPT_NAME}.log" typeset -r LOG_FILE="${LOG_DIR}/${SCRIPT_NAME}.log"
@ -74,28 +79,35 @@ typeset PATH=${PATH}:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
typeset CMD_LINE="" typeset CMD_LINE=""
typeset CMD_PARAMETER="" typeset CMD_PARAMETER=""
typeset CHILD_ERROR=0 typeset CHILD_ERROR=0
# shellcheck disable=SC2034
typeset DIR_PREFIX="$(date '+%Y-%m')" typeset DIR_PREFIX="$(date '+%Y-%m')"
typeset EXIT_CODE=0 typeset EXIT_CODE=0
typeset FDIR="" typeset FDIR=""
typeset FFILE="" typeset FFILE=""
typeset FPATH="" typeset FPATH=""
typeset HC_FAIL_ID="" typeset HC_FAIL_ID=""
# shellcheck disable=SC2034
typeset HC_FILE_LINE="" typeset HC_FILE_LINE=""
typeset HC_NOW="" typeset HC_NOW=""
typeset HC_TIME_OUT=60 typeset HC_TIME_OUT=60
typeset HC_MIN_TIME_OUT=30 typeset HC_MIN_TIME_OUT=30
# shellcheck disable=SC2034
typeset HC_MSG_VAR="" typeset HC_MSG_VAR=""
typeset HC_STDOUT_LOG="" typeset HC_STDOUT_LOG=""
typeset HC_STDERR_LOG="" typeset HC_STDERR_LOG=""
# shellcheck disable=SC2034
typeset LINUX_DISTRO="" typeset LINUX_DISTRO=""
# shellcheck disable=SC2034
typeset LINUX_RELEASE="" typeset LINUX_RELEASE=""
typeset ARCHIVE_RC=0 typeset ARCHIVE_RC=0
typeset DISABLE_RC=0 typeset DISABLE_RC=0
typeset ENABLE_RC=0 typeset ENABLE_RC=0
# shellcheck disable=SC2034
typeset FIX_FC=0 typeset FIX_FC=0
typeset RUN_RC=0 typeset RUN_RC=0
typeset RUN_CONFIG_FILE="" typeset RUN_CONFIG_FILE=""
typeset RUN_TIME_OUT=0 typeset RUN_TIME_OUT=0
# shellcheck disable=SC2034
typeset SORT_CMD="" typeset SORT_CMD=""
typeset DEBUG_OPTS="" typeset DEBUG_OPTS=""
# command-line parameters # command-line parameters
@ -217,7 +229,7 @@ function check_core
# check and include core helper libs # check and include core helper libs
if [[ -r ${FPATH_PARENT}/core/include_core.sh && -h ${FPATH_PARENT}/core/include_core ]] if [[ -r ${FPATH_PARENT}/core/include_core.sh && -h ${FPATH_PARENT}/core/include_core ]]
then then
# source /opt/hc/lib/core/include_core.sh # shellcheck source=/opt/hc/lib/core/include_core.sh
. ${FPATH_PARENT}/core/include_core.sh . ${FPATH_PARENT}/core/include_core.sh
else else
print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_core.sh is not present (tip: run --fix-symlinks)" print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_core.sh is not present (tip: run --fix-symlinks)"
@ -225,7 +237,7 @@ else
fi fi
if [[ -r ${FPATH_PARENT}/core/include_data.sh && -h ${FPATH_PARENT}/core/include_data ]] if [[ -r ${FPATH_PARENT}/core/include_data.sh && -h ${FPATH_PARENT}/core/include_data ]]
then then
# source /opt/hc/lib/core/include_data.sh # shellcheck source=/opt/hc/lib/core/include_data.sh
. ${FPATH_PARENT}/core/include_data.sh . ${FPATH_PARENT}/core/include_data.sh
else else
print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_data.sh is not present (tip: run --fix-symlinks)" print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_data.sh is not present (tip: run --fix-symlinks)"
@ -233,7 +245,7 @@ else
fi fi
if [[ -r ${FPATH_PARENT}/core/include_os.sh && -h ${FPATH_PARENT}/core/include_os ]] if [[ -r ${FPATH_PARENT}/core/include_os.sh && -h ${FPATH_PARENT}/core/include_os ]]
then then
# source /opt/hc/lib/core/include_os.sh # shellcheck source=/opt/hc/lib/core/include_os.sh
. ${FPATH_PARENT}/core/include_os.sh . ${FPATH_PARENT}/core/include_os.sh
else else
print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_os.sh is not present (tip: run --fix-symlinks)" print -u2 "ERROR: library file ${FPATH_PARENT}/core/include_os.sh is not present (tip: run --fix-symlinks)"
@ -468,6 +480,7 @@ function check_user
typeset WHOAMI="" typeset WHOAMI=""
# avoid sub-shell for mksh/pdksh # avoid sub-shell for mksh/pdksh
# shellcheck disable=SC2046
WHOAMI=$(IFS='()'; set -- $(id); print $2) WHOAMI=$(IFS='()'; set -- $(id); print $2)
if [[ "${WHOAMI}" != "${EXEC_USER}" ]] if [[ "${WHOAMI}" != "${EXEC_USER}" ]]
then then
@ -493,6 +506,7 @@ case "${KSH_VERSION}" in
*) *)
if [[ -z "${ERRNO}" ]] if [[ -z "${ERRNO}" ]]
then then
# shellcheck disable=SC2154
(( ARG_DEBUG != 0 )) && print "running ksh: ${.sh.version}" (( ARG_DEBUG != 0 )) && print "running ksh: ${.sh.version}"
else else
(( ARG_DEBUG != 0 )) && print "running ksh: ksh88 or older" (( ARG_DEBUG != 0 )) && print "running ksh: ksh88 or older"
@ -648,6 +662,7 @@ done
print "${FPATH}" | tr ':' '\n' | while read -r FDIR print "${FPATH}" | tr ':' '\n' | while read -r FDIR
do do
# do not use 'find -type l' here! # do not use 'find -type l' here!
# shellcheck disable=SC2010
ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FSYML ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FSYML
do do
# check if file is a dead symlink # check if file is a dead symlink
@ -672,7 +687,6 @@ return 0
function read_config function read_config
{ {
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset SMS_CONFIG_FILE=""
if [[ -z "${CONFIG_FILE}" ]] || [[ -z "${CONFIG_FILE}" ]] if [[ -z "${CONFIG_FILE}" ]] || [[ -z "${CONFIG_FILE}" ]]
then then
@ -682,6 +696,7 @@ if [[ ! -r "${CONFIG_FILE}" ]]
then then
die "unable to read configuration file at ${CONFIG_FILE}" die "unable to read configuration file at ${CONFIG_FILE}"
else else
# shellcheck source=/dev/null
. "${CONFIG_FILE}" . "${CONFIG_FILE}"
fi fi
@ -741,6 +756,7 @@ do
ARG_DEBUG_LEVEL="${CMD_PARAMETER#--debug-level=}" ARG_DEBUG_LEVEL="${CMD_PARAMETER#--debug-level=}"
;; ;;
-detail|--detail) -detail|--detail)
# shellcheck disable=SC2034
ARG_DETAIL=1 ARG_DETAIL=1
;; ;;
-d|-disable|--disable) -d|-disable|--disable)
@ -769,6 +785,7 @@ do
ARG_DISPLAY="${CMD_PARAMETER#-display=}" ARG_DISPLAY="${CMD_PARAMETER#-display=}"
;; ;;
--display=*) --display=*)
# shellcheck disable=SC2034
ARG_DISPLAY="${CMD_PARAMETER#--display=}" ARG_DISPLAY="${CMD_PARAMETER#--display=}"
;; ;;
-e|-enable|--enable) -e|-enable|--enable)
@ -824,15 +841,19 @@ do
ARG_HC_ARGS="${CMD_PARAMETER#--hc-args=}" ARG_HC_ARGS="${CMD_PARAMETER#--hc-args=}"
;; ;;
-with-history|--with-history) -with-history|--with-history)
# shellcheck disable=SC2034
ARG_HISTORY=1 ARG_HISTORY=1
;; ;;
-id=*) -id=*)
# shellcheck disable=SC2034
ARG_FAIL_ID="${CMD_PARAMETER#-id=}" ARG_FAIL_ID="${CMD_PARAMETER#-id=}"
;; ;;
--id=*) --id=*)
# shellcheck disable=SC2034
ARG_FAIL_ID="${CMD_PARAMETER#--id=}" ARG_FAIL_ID="${CMD_PARAMETER#--id=}"
;; ;;
-last|--last) -last|--last)
# shellcheck disable=SC2034
ARG_LAST=1 ARG_LAST=1
;; ;;
-list|--list) -list|--list)
@ -885,12 +906,14 @@ do
ARG_MAIL_TO="${CMD_PARAMETER#-mail-to=}" ARG_MAIL_TO="${CMD_PARAMETER#-mail-to=}"
;; ;;
--mail-to=*) --mail-to=*)
# shellcheck disable=SC2034
ARG_MAIL_TO="${CMD_PARAMETER#--mail-to=}" ARG_MAIL_TO="${CMD_PARAMETER#--mail-to=}"
;; ;;
-notify=*) -notify=*)
ARG_NOTIFY="${CMD_PARAMETER#-notify=}" ARG_NOTIFY="${CMD_PARAMETER#-notify=}"
;; ;;
--notify=*) --notify=*)
# shellcheck disable=SC2034
ARG_NOTIFY="${CMD_PARAMETER#--notify=}" ARG_NOTIFY="${CMD_PARAMETER#--notify=}"
;; ;;
-no-log|--no-log) -no-log|--no-log)
@ -933,10 +956,12 @@ do
else else
ARG_ACTION=8 ARG_ACTION=8
fi fi
# shellcheck disable=SC2034
ARG_REPORT="${CMD_PARAMETER#--report=}" ARG_REPORT="${CMD_PARAMETER#--report=}"
ARG_LOG=0; ARG_VERBOSE=0 ARG_LOG=0; ARG_VERBOSE=0
;; ;;
-reverse|--reverse) -reverse|--reverse)
# shellcheck disable=SC2034
ARG_REVERSE=1 ARG_REVERSE=1
;; ;;
-r|-run|--run) -r|-run|--run)
@ -956,7 +981,9 @@ do
else else
ARG_ACTION=5 ARG_ACTION=5
fi fi
ARG_LOG=0; ARG_VERBOSE=0 ARG_LOG=0
# shellcheck disable=SC2034
ARG_VERBOSE=0
;; ;;
-show-stats|--show-stats) -show-stats|--show-stats)
if (( ARG_ACTION > 0 )) if (( ARG_ACTION > 0 ))
@ -971,12 +998,14 @@ do
ARG_SMS_PROVIDER="${CMD_PARAMETER#-sms-provider=}" ARG_SMS_PROVIDER="${CMD_PARAMETER#-sms-provider=}"
;; ;;
--sms-provider=*) --sms-provider=*)
# shellcheck disable=SC2034
ARG_SMS_PROVIDER="${CMD_PARAMETER#--sms-provider=}" ARG_SMS_PROVIDER="${CMD_PARAMETER#--sms-provider=}"
;; ;;
-sms-to=*) -sms-to=*)
ARG_SMS_TO="${CMD_PARAMETER#-sms-to=}" ARG_SMS_TO="${CMD_PARAMETER#-sms-to=}"
;; ;;
--sms-to=*) --sms-to=*)
# shellcheck disable=SC2034
ARG_SMS_TO="${CMD_PARAMETER#--sms-to=}" ARG_SMS_TO="${CMD_PARAMETER#--sms-to=}"
;; ;;
-timeout=*) -timeout=*)
@ -986,6 +1015,7 @@ do
ARG_TIME_OUT="${CMD_PARAMETER#--timeout=}" ARG_TIME_OUT="${CMD_PARAMETER#--timeout=}"
;; ;;
-today|--today) -today|--today)
# shellcheck disable=SC2034
ARG_TODAY=1 ARG_TODAY=1
;; ;;
-v|-version|--version) -v|-version|--version)
@ -1047,6 +1077,7 @@ log "*** start of ${SCRIPT_NAME} [${CMD_LINE}] ***"
(( ARG_ACTION == 4 || ARG_ACTION == 11 || ARG_ACTION == 12 )) && check_lock_dir (( ARG_ACTION == 4 || ARG_ACTION == 11 || ARG_ACTION == 12 )) && check_lock_dir
# general HC log # general HC log
# shellcheck disable=SC2034
HC_LOG="${LOG_DIR}/hc.log" HC_LOG="${LOG_DIR}/hc.log"
# get linux stuff # get linux stuff
@ -1152,7 +1183,9 @@ case ${ARG_ACTION} in
# set & initialize STDOUT/STDERR locations (not in init_hc()!) # set & initialize STDOUT/STDERR locations (not in init_hc()!)
HC_STDOUT_LOG="${TMP_DIR}/${HC_RUN}.stdout.log.$$" HC_STDOUT_LOG="${TMP_DIR}/${HC_RUN}.stdout.log.$$"
HC_STDERR_LOG="${TMP_DIR}/${HC_RUN}.stderr.log.$$" HC_STDERR_LOG="${TMP_DIR}/${HC_RUN}.stderr.log.$$"
# shellcheck disable=SC2188
>${HC_STDOUT_LOG} 2>/dev/null >${HC_STDOUT_LOG} 2>/dev/null
# shellcheck disable=SC2188
>${HC_STDERR_LOG} 2>/dev/null >${HC_STDERR_LOG} 2>/dev/null
# --check-host handling: alternative configuration file, mangle ARG_CONFIG_FILE & HC_TIME_OUT # --check-host handling: alternative configuration file, mangle ARG_CONFIG_FILE & HC_TIME_OUT

View File

@ -30,7 +30,7 @@
function display_csv function display_csv
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
typeset _DISPLAY_SEP=";" typeset _DISPLAY_SEP=";"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -42,11 +42,10 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _DISPLAY_HC="$1" typeset _DISPLAY_HC="$1"
typeset _DISPLAY_FAIL_ID="$2" typeset _DISPLAY_FAIL_ID="$2"
typeset _HC_MSG_ENTRY=""
typeset _DISPLAY_MSG_STC="" typeset _DISPLAY_MSG_STC=""
typeset _DISPLAY_MSG_TIME="" typeset _DISPLAY_MSG_TIME=""
typeset _DISPLAY_MSG_TEXT="" typeset _DISPLAY_MSG_TEXT=""
typeset _DISPLAY_MSG_CUR_VAL="" typeset _DISPLAY_MSG_CUR_VAL=""
typeset _DISPLAY_MSG_EXP_VAL="" typeset _DISPLAY_MSG_EXP_VAL=""
typeset _ID_BIT="" typeset _ID_BIT=""
@ -56,6 +55,7 @@ then
printf "%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s\n" "Health Check" "STC" "Message" "FAIL ID" \ printf "%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s${_DISPLAY_SEP}%s\n" "Health Check" "STC" "Message" "FAIL ID" \
"Current Value" "Expected Value" "Current Value" "Expected Value"
# shellcheck disable=SC2034
print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL
do do
# magically unquote if needed # magically unquote if needed
@ -82,8 +82,8 @@ then
then then
_DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}") _DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}")
fi fi
fi fi
if (( _DISPLAY_MSG_STC > 0 )) if (( _DISPLAY_MSG_STC > 0 ))
then then
_ID_BIT="${_DISPLAY_FAIL_ID}" _ID_BIT="${_DISPLAY_FAIL_ID}"
else else

View File

@ -31,7 +31,7 @@
function display_init function display_init
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-14" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -59,7 +59,6 @@ then
typeset _BLUE=$(tput setaf 4) typeset _BLUE=$(tput setaf 4)
typeset _MAGENTA=$(tput setaf 5) typeset _MAGENTA=$(tput setaf 5)
typeset _CYAN=$(tput setaf 6) typeset _CYAN=$(tput setaf 6)
typeset _WHITE=$(tput setaf 7)
typeset _BOLD=$(tput bold) typeset _BOLD=$(tput bold)
typeset _NORMAL=$(tput sgr0) typeset _NORMAL=$(tput sgr0)
else else
@ -69,7 +68,6 @@ else
typeset _BLUE="" typeset _BLUE=""
typeset _MAGENTA="" typeset _MAGENTA=""
typeset _CYAN="" typeset _CYAN=""
typeset _WHITE=""
typeset _BOLD="" typeset _BOLD=""
typeset _NORMAL="" typeset _NORMAL=""
fi fi
@ -98,9 +96,9 @@ else
print "${HC_MSG_VAR}" | while read _HC_MSG_ENTRY print "${HC_MSG_VAR}" | while read _HC_MSG_ENTRY
do do
# determine _DISPLAY_MSG_STC (sum of all STCs) # determine _DISPLAY_MSG_STC (sum of all STCs)
_DISPLAY_MSG_STC=$(print "${HC_MSG_VAR}" | awk -F"${MSG_SEP}" 'BEGIN { stc = 0 } { for (i=1;i<=NF;i++) { stc = stc + $1 } } END { print stc }' 2>/dev/null) _DISPLAY_MSG_STC=$(print "${_HC_MSG_ENTRY}" | awk -F"${MSG_SEP}" 'BEGIN { stc = 0 } { for (i=1;i<=NF;i++) { stc = stc + $1 } } END { print stc }' 2>/dev/null)
done done
# display HC results # display HC results
if (( _DISPLAY_MSG_STC == 0 )) if (( _DISPLAY_MSG_STC == 0 ))
then then
@ -114,7 +112,7 @@ else
then then
_DISPLAY_ID=" (${_BOLD}${_DISPLAY_FAIL_ID}${_NORMAL})" _DISPLAY_ID=" (${_BOLD}${_DISPLAY_FAIL_ID}${_NORMAL})"
else else
_DISPLAY_ID=" (${_BOLD}not logged${_NORMAL})" _DISPLAY_ID=" (${_BOLD}not logged${_NORMAL})"
fi fi
fi fi
else else

View File

@ -30,9 +30,8 @@
function display_json function display_json
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
typeset _DISPLAY_SEP=";"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
# set defaults # set defaults
@ -42,11 +41,10 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _DISPLAY_HC="$1" typeset _DISPLAY_HC="$1"
typeset _DISPLAY_FAIL_ID="$2" typeset _DISPLAY_FAIL_ID="$2"
typeset _HC_MSG_ENTRY=""
typeset _DISPLAY_MSG_STC="" typeset _DISPLAY_MSG_STC=""
typeset _DISPLAY_MSG_TIME="" typeset _DISPLAY_MSG_TIME=""
typeset _DISPLAY_MSG_TEXT="" typeset _DISPLAY_MSG_TEXT=""
typeset _DISPLAY_MSG_CUR_VAL="" typeset _DISPLAY_MSG_CUR_VAL=""
typeset _DISPLAY_MSG_EXP_VAL="" typeset _DISPLAY_MSG_EXP_VAL=""
typeset _ID_BIT="" typeset _ID_BIT=""
@ -79,8 +77,8 @@ then
then then
_DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}") _DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}")
fi fi
fi fi
if (( _DISPLAY_MSG_STC > 0 )) if (( _DISPLAY_MSG_STC > 0 ))
then then
_ID_BIT="${_DISPLAY_FAIL_ID}" _ID_BIT="${_DISPLAY_FAIL_ID}"
else else
@ -90,7 +88,7 @@ then
_DISPLAY_MSG_TEXT=$(data_escape_json "${_DISPLAY_MSG_TEXT}") _DISPLAY_MSG_TEXT=$(data_escape_json "${_DISPLAY_MSG_TEXT}")
_DISPLAY_MSG_CUR_VAL=$(data_escape_json "${_DISPLAY_MSG_CUR_VAL}") _DISPLAY_MSG_CUR_VAL=$(data_escape_json "${_DISPLAY_MSG_CUR_VAL}")
_DISPLAY_MSG_EXP_VAL=$(data_escape_json "${_DISPLAY_MSG_EXP_VAL}") _DISPLAY_MSG_EXP_VAL=$(data_escape_json "${_DISPLAY_MSG_EXP_VAL}")
printf '{"hc":"%s","stc":"%s","time":"%s","fail_id":"%s","text":"%s","current_value":"%s","expected_value":"%s"}\n' \ printf '{"hc":"%s","stc":"%s","time":"%s","fail_id":"%s","text":"%s","current_value":"%s","expected_value":"%s"}\n' \
"${_DISPLAY_HC}" \ "${_DISPLAY_HC}" \

View File

@ -41,11 +41,10 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _DISPLAY_HC="$1" typeset _DISPLAY_HC="$1"
typeset _DISPLAY_FAIL_ID="$2" typeset _DISPLAY_FAIL_ID="$2"
typeset _HC_MSG_ENTRY=""
typeset _DISPLAY_MSG_STC="" typeset _DISPLAY_MSG_STC=""
typeset _DISPLAY_MSG_TIME="" typeset _DISPLAY_MSG_TIME=""
typeset _DISPLAY_MSG_TEXT="" typeset _DISPLAY_MSG_TEXT=""
typeset _DISPLAY_MSG_CUR_VAL="" typeset _DISPLAY_MSG_CUR_VAL=""
typeset _DISPLAY_MSG_EXP_VAL="" typeset _DISPLAY_MSG_EXP_VAL=""
typeset _ID_BIT="" typeset _ID_BIT=""
@ -54,6 +53,7 @@ if [[ -n "${HC_MSG_VAR}" ]]
then then
printf "%-30s\t%s\t%-16s\t%s\n" "HC" "STC" "FAIL ID" "Message" printf "%-30s\t%s\t%-16s\t%s\n" "HC" "STC" "FAIL ID" "Message"
# shellcheck disable=SC2034
print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL
do do
# magically unquote if needed # magically unquote if needed
@ -80,8 +80,8 @@ then
then then
_DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}") _DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}")
fi fi
fi fi
if (( _DISPLAY_MSG_STC > 0 )) if (( _DISPLAY_MSG_STC > 0 ))
then then
_ID_BIT="${_DISPLAY_FAIL_ID}" _ID_BIT="${_DISPLAY_FAIL_ID}"
else else
@ -91,8 +91,8 @@ then
"${_DISPLAY_HC}" \ "${_DISPLAY_HC}" \
"${_DISPLAY_MSG_STC}" \ "${_DISPLAY_MSG_STC}" \
"${_ID_BIT}" \ "${_ID_BIT}" \
"${_DISPLAY_MSG_TEXT}" "${_DISPLAY_MSG_TEXT}"
done done
else else
ARG_LOG=0 ARG_VERBOSE=1 log "INFO: no HC results to display" ARG_LOG=0 ARG_VERBOSE=1 log "INFO: no HC results to display"
fi fi

View File

@ -32,7 +32,7 @@
function display_zenoss function display_zenoss
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -43,16 +43,16 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _DISPLAY_HC="$1" typeset _DISPLAY_HC="$1"
typeset _DISPLAY_FAIL_ID="$2" typeset _DISPLAY_FAIL_ID="$2"
typeset _HC_MSG_ENTRY=""
typeset _DISPLAY_MSG_STC="" typeset _DISPLAY_MSG_STC=""
typeset _DISPLAY_MSG_TIME="" typeset _DISPLAY_MSG_TIME=""
typeset _DISPLAY_MSG_TEXT="" typeset _DISPLAY_MSG_TEXT=""
typeset _DISPLAY_MSG_CUR_VAL="" typeset _DISPLAY_MSG_CUR_VAL=""
typeset _DISPLAY_MSG_EXP_VAL="" typeset _DISPLAY_MSG_EXP_VAL=""
# parse $HC_MSG_VAR # parse $HC_MSG_VAR
if [[ -n "${HC_MSG_VAR}" ]] if [[ -n "${HC_MSG_VAR}" ]]
then then
# shellcheck disable=SC2034
print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _DISPLAY_MSG_STC _DISPLAY_MSG_TIME _DISPLAY_MSG_TEXT _DISPLAY_MSG_CUR_VAL _DISPLAY_MSG_EXP_VAL
do do
# magically unquote if needed # magically unquote if needed
@ -79,8 +79,8 @@ then
then then
_DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}") _DISPLAY_MSG_EXP_VAL=$(data_magic_unquote "${_DISPLAY_MSG_EXP_VAL}")
fi fi
fi fi
if (( _DISPLAY_MSG_STC > 0 )) if (( _DISPLAY_MSG_STC > 0 ))
then then
printf "NOK|data1=%s data2=%s data3=%s data4=\"%s\" data5=%s data6=%s\n" \ printf "NOK|data1=%s data2=%s data3=%s data4=\"%s\" data5=%s data6=%s\n" \
"${_DISPLAY_HC}" \ "${_DISPLAY_HC}" \
@ -97,7 +97,7 @@ then
"${_DISPLAY_MSG_TEXT}" \ "${_DISPLAY_MSG_TEXT}" \
"${_DISPLAY_MSG_CUR_VAL}" \ "${_DISPLAY_MSG_CUR_VAL}" \
"${_DISPLAY_MSG_EXP_VAL}" "${_DISPLAY_MSG_EXP_VAL}"
fi fi
done done
fi fi

View File

@ -153,6 +153,7 @@ then
then then
print - "$*" | while read -r LOG_LINE print - "$*" | while read -r LOG_LINE
do do
# shellcheck disable=SC2153
print "${NOW}: ERROR: [$$]:" "${LOG_LINE}" >>${LOG_FILE} print "${NOW}: ERROR: [$$]:" "${LOG_LINE}" >>${LOG_FILE}
done done
fi fi
@ -220,6 +221,7 @@ HAS_REPORT_STD=0
# check which core display/notification plugins are installed # check which core display/notification plugins are installed
# do not use a while-do loop here because mksh/pdksh does not pass updated # do not use a while-do loop here because mksh/pdksh does not pass updated
# variables back from the sub shell (only works for true ksh88/ksh93) # variables back from the sub shell (only works for true ksh88/ksh93)
# shellcheck disable=SC2010
for FFILE in $(ls -1 ${FPATH_PARENT}/core/*.sh 2>/dev/null | grep -v "include_" 2>/dev/null) for FFILE in $(ls -1 ${FPATH_PARENT}/core/*.sh 2>/dev/null | grep -v "include_" 2>/dev/null)
do do
case "${FFILE}" in case "${FFILE}" in
@ -593,7 +595,7 @@ typeset EXISTS_RC=0
# variables back from the sub shell (only works for true ksh88/ksh93) # variables back from the sub shell (only works for true ksh88/ksh93)
for FDIR in $(print "${FPATH}" | tr ':' ' ' 2>/dev/null) for FDIR in $(print "${FPATH}" | tr ':' ' ' 2>/dev/null)
do do
$(data_contains_string "${FDIR}" "core") data_contains_string "${FDIR}" "core"
if (( $? == 0 )) if (( $? == 0 ))
then then
ls "${FDIR}/${EXISTS_HC}" >/dev/null 2>&1 && EXISTS_RC=1 ls "${FDIR}/${EXISTS_HC}" >/dev/null 2>&1 && EXISTS_RC=1
@ -613,7 +615,6 @@ function find_hc
{ {
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset FIND_HC="${1}" typeset FIND_HC="${1}"
typeset FIND_PATH=""
typeset FDIR="" typeset FDIR=""
print "${FPATH}" | tr ':' '\n' | grep -v "core$" | while read -r FDIR print "${FPATH}" | tr ':' '\n' | grep -v "core$" | while read -r FDIR
@ -670,6 +671,7 @@ do
# rewrite if needed # rewrite if needed
if (( ERROR_COUNT > 0 )) if (( ERROR_COUNT > 0 ))
then then
# shellcheck disable=SC2188
>${TMP_FILE} 2>/dev/null >${TMP_FILE} 2>/dev/null
cat ${FIX_FILE} 2>/dev/null | awk -F"${LOG_SEP}" -v OFS="${LOG_SEP}" ' cat ${FIX_FILE} 2>/dev/null | awk -F"${LOG_SEP}" -v OFS="${LOG_SEP}" '
@ -797,7 +799,6 @@ function handle_hc
typeset HC_NAME="${1}" typeset HC_NAME="${1}"
typeset HC_STDOUT_LOG_SHORT="" typeset HC_STDOUT_LOG_SHORT=""
typeset HC_STDERR_LOG_SHORT="" typeset HC_STDERR_LOG_SHORT=""
typeset HC_MSG_ENTRY=""
typeset HC_STC_RC=0 typeset HC_STC_RC=0
typeset ONE_MSG_STC=0 typeset ONE_MSG_STC=0
typeset ONE_MSG_TIME="" typeset ONE_MSG_TIME=""
@ -823,7 +824,7 @@ then
# determine ALL_MSG_STC (sum of all STCs) # determine ALL_MSG_STC (sum of all STCs)
ALL_MSG_STC=$(print "${HC_MSG_VAR}" | awk -F"${MSG_SEP}" 'BEGIN { stc = 0 } { for (i=1;i<=NF;i++) { stc = stc + $1 }} END { print stc }' 2>/dev/null) ALL_MSG_STC=$(print "${HC_MSG_VAR}" | awk -F"${MSG_SEP}" 'BEGIN { stc = 0 } { for (i=1;i<=NF;i++) { stc = stc + $1 }} END { print stc }' 2>/dev/null)
(( ARG_DEBUG != 0 )) && debug "HC all STC: ${ALL_MSG_STC}" (( ARG_DEBUG != 0 )) && debug "HC all STC: ${ALL_MSG_STC}"
$(data_is_numeric ${ALL_MSG_STC}) || die "HC all STC computes to a non-numeric value" data_is_numeric ${ALL_MSG_STC} || die "HC all STC computes to a non-numeric value"
else else
# nothing to do # nothing to do
return 0 return 0
@ -1128,6 +1129,7 @@ function handle_timeout
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
[[ -n "${CHILD_PID}" ]] && kill -s TERM ${CHILD_PID} [[ -n "${CHILD_PID}" ]] && kill -s TERM ${CHILD_PID}
warn "child process with PID ${CHILD_PID} has been forcefully stopped" warn "child process with PID ${CHILD_PID} has been forcefully stopped"
# shellcheck disable=SC2034
CHILD_ERROR=1 CHILD_ERROR=1
return 0 return 0
@ -1142,9 +1144,6 @@ return 0
function init_check_host function init_check_host
{ {
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset DUMMY=""
typeset HC_CONFIG=""
typeset HC_DESC=""
typeset HC_EXEC="" typeset HC_EXEC=""
typeset DISPLAY_STYLE="" typeset DISPLAY_STYLE=""
@ -1152,7 +1151,7 @@ typeset DISPLAY_STYLE=""
# read required config values # read required config values
DISPLAY_STYLE=$(_CONFIG_FILE="${HOST_CONFIG_FILE}" data_get_lvalue_from_config 'display_style') DISPLAY_STYLE=$(_CONFIG_FILE="${HOST_CONFIG_FILE}" data_get_lvalue_from_config 'display_style')
case "${REPORT_STYLE}" in case "${DISPLAY_STYLE}" in
csv|CSV) # csv format csv|CSV) # csv format
if (( HAS_DISPLAY_CSV == 1 )) if (( HAS_DISPLAY_CSV == 1 ))
then then
@ -1258,7 +1257,7 @@ esac
# mangle $ARG_HC to build the full list of HCs to be executed # mangle $ARG_HC to build the full list of HCs to be executed
ARG_HC="" ARG_HC=""
grep -i '^hc:' ${HOST_CONFIG_FILE} 2>/dev/null |\ grep -i '^hc:' ${HOST_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read DUMMY HC_EXEC HC_CONFIG HC_DESC while IFS=':' read _ HC_EXEC _ _
do do
ARG_HC="${ARG_HC},${HC_EXEC}" ARG_HC="${ARG_HC},${HC_EXEC}"
done done
@ -1359,11 +1358,13 @@ typeset HC_VERSION=""
if [[ "${FACTION}" != "list" ]] if [[ "${FACTION}" != "list" ]]
then then
printf "%-30s\t%-8s\t%s\t\t%s\n" "Core plugin" "State" "Version" "Config?" printf "%-30s\t%-8s\t%s\t\t%s\n" "Core plugin" "State" "Version" "Config?"
# shellcheck disable=SC2183
printf "%80s\n" | tr ' ' - printf "%80s\n" | tr ' ' -
fi fi
print "${FPATH}" | tr ':' '\n' | grep "core$" | sort 2>/dev/null | while read -r FDIR print "${FPATH}" | tr ':' '\n' | grep "core$" | sort 2>/dev/null | while read -r FDIR
do do
# exclude core helper librar(y|ies) # exclude core helper librar(y|ies)
# shellcheck disable=SC2010
ls -1 ${FDIR}/*.sh 2>/dev/null | grep -v "include_" | sort 2>/dev/null | while read -r FFILE ls -1 ${FDIR}/*.sh 2>/dev/null | grep -v "include_" | sort 2>/dev/null | while read -r FFILE
do do
# reset state # reset state
@ -1405,6 +1406,7 @@ then
print "${FPATH}" | tr ':' '\n' | grep "core$" | while read -r FDIR print "${FPATH}" | tr ':' '\n' | grep "core$" | while read -r FDIR
do do
# do not use 'find -type l' here! # do not use 'find -type l' here!
# shellcheck disable=SC2010
ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FFILE ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FFILE
do do
if [[ -h "${FDIR}/${FFILE}" ]] && [[ ! -f "${FDIR}/${FFILE}" ]] if [[ -h "${FDIR}/${FFILE}" ]] && [[ ! -f "${FDIR}/${FFILE}" ]]
@ -1460,6 +1462,7 @@ fi
if [[ "${FACTION}" != "list" ]] if [[ "${FACTION}" != "list" ]]
then then
printf "%-30s\t%-8s\t%s\t\t%s\t%s\t%s\n" "Health Check" "State" "Version" "Config?" "Sched?" "H+?" printf "%-30s\t%-8s\t%s\t\t%s\t%s\t%s\n" "Health Check" "State" "Version" "Config?" "Sched?" "H+?"
# shellcheck disable=SC2183
printf "%100s\n" | tr ' ' - printf "%100s\n" | tr ' ' -
fi fi
print "${FPATH}" | tr ':' '\n' | grep -v "core$" | sort 2>/dev/null | while read -r FDIR print "${FPATH}" | tr ':' '\n' | grep -v "core$" | sort 2>/dev/null | while read -r FDIR
@ -1492,8 +1495,8 @@ do
;; ;;
esac esac
else else
FHEALTHY="N/S" FHEALTHY="N/S"
fi fi
# *.conf next # *.conf next
if [[ -r ${CONFIG_DIR}/${FNAME#function *}.conf ]] if [[ -r ${CONFIG_DIR}/${FNAME#function *}.conf ]]
then then
@ -1509,7 +1512,7 @@ do
*) *)
FHEALTHY="N/S" FHEALTHY="N/S"
;; ;;
esac esac
fi fi
# check for log_healthy support through --hc-args (plugin) # check for log_healthy support through --hc-args (plugin)
elif (( $(grep -c -E -e "_LOG_HEALTHY" "${FFILE}" 2>/dev/null) > 0 )) elif (( $(grep -c -E -e "_LOG_HEALTHY" "${FFILE}" 2>/dev/null) > 0 ))
@ -1562,6 +1565,7 @@ then
print "${FPATH}" | tr ':' '\n' | grep -v "core" | while read -r FDIR print "${FPATH}" | tr ':' '\n' | grep -v "core" | while read -r FDIR
do do
# do not use 'find -type l' here! # do not use 'find -type l' here!
# shellcheck disable=SC2010
ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FFILE ls ${FDIR} 2>/dev/null | grep -v "\." | while read -r FFILE
do do
if [[ -h "${FDIR}/${FFILE}" ]] && [[ ! -f "${FDIR}/${FFILE}" ]] if [[ -h "${FDIR}/${FFILE}" ]] && [[ ! -f "${FDIR}/${FFILE}" ]]
@ -1635,7 +1639,6 @@ function log_hc
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset HC_NAME="${1}" typeset HC_NAME="${1}"
typeset HC_STC=${2} typeset HC_STC=${2}
typeset HC_MSG="${3}"
typeset HC_NOW="$(date '+%Y-%m-%d %H:%M:%S' 2>/dev/null)" typeset HC_NOW="$(date '+%Y-%m-%d %H:%M:%S' 2>/dev/null)"
typeset HC_MSG_CUR_VAL="" typeset HC_MSG_CUR_VAL=""
typeset HC_MSG_EXP_VAL="" typeset HC_MSG_EXP_VAL=""
@ -1823,4 +1826,4 @@ return 0
#****************************************************************************** #******************************************************************************
# END of script # END of script
#****************************************************************************** #******************************************************************************

View File

@ -41,7 +41,7 @@ _LVALUE=$(grep -i "^${_PARAMETER} *=" ${_CONFIG_FILE} | cut -f2- -d'=')
if [[ -n "${_LVALUE}" ]] if [[ -n "${_LVALUE}" ]]
then then
print $(data_dequote "${_LVALUE}") print "$(data_dequote \"${_LVALUE}\")"
else else
_RC=1 _RC=1
fi fi
@ -88,7 +88,7 @@ return ${_RC}
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# @(#) FUNCTION: data_magic_quote() # @(#) FUNCTION: data_magic_quote()
# DOES: magically quotes a needle in a string (default needle is: %) # DOES: magically quotes a needle in a string (default needle is: %)
# EXPECTS: to be magically quoted [string]; $2=needle [string] # EXPECTS: to be magically quoted [string]; $2=needle [string]
# OUTPUTS: magically quoted [string] # OUTPUTS: magically quoted [string]
# RETURNS: n/a # RETURNS: n/a
# REQUIRES: n/a # REQUIRES: n/a
@ -106,7 +106,7 @@ return 0
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# @(#) FUNCTION: data_magic_unquote() # @(#) FUNCTION: data_magic_unquote()
# DOES: magically unquotes a needle in a string (default needle is: %) # DOES: magically unquotes a needle in a string (default needle is: %)
# EXPECTS: to be magically unquoted [string]; $2=needle [string] # EXPECTS: to be magically unquoted [string]; $2=needle [string]
# OUTPUTS: magically unquoted [string] # OUTPUTS: magically unquoted [string]
# RETURNS: n/a # RETURNS: n/a
# REQUIRES: n/a # REQUIRES: n/a
@ -473,9 +473,9 @@ case "${1}" in
+([0-9])*(.)*([0-9])) +([0-9])*(.)*([0-9]))
# numeric, OK # numeric, OK
;; ;;
*) *)
# not numeric # not numeric
return 1 return 1
;; ;;
esac esac
@ -544,7 +544,7 @@ return 0
# OUTPUTS: 32 bit number [string] # OUTPUTS: 32 bit number [string]
# REQUIRES: n/a # REQUIRES: n/a
# REFERENCE: https://raw.githubusercontent.com/dualbus/tutorial_nmap/master/iprange # REFERENCE: https://raw.githubusercontent.com/dualbus/tutorial_nmap/master/iprange
function data_dot2ip function data_dot2ip
{ {
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset _DOT="${1}" typeset _DOT="${1}"
@ -553,7 +553,7 @@ typeset _OLD_IFS="${IFS}"
IFS="." IFS="."
set -A _COMPS ${_DOT} set -A _COMPS ${_DOT}
IFS="${OLD_IFS}" IFS="${_OLD_IFS}"
_IP=$((_IP | ((_COMPS[0] & 255) << 24) )) _IP=$((_IP | ((_COMPS[0] & 255) << 24) ))
_IP=$((_IP | ((_COMPS[1] & 255) << 16) )) _IP=$((_IP | ((_COMPS[1] & 255) << 16) ))
@ -573,13 +573,13 @@ return 0
# RETURNS: 0 # RETURNS: 0
# REQUIRES: n/a # REQUIRES: n/a
# REFERENCE: https://raw.githubusercontent.com/dualbus/tutorial_nmap/master/iprange # REFERENCE: https://raw.githubusercontent.com/dualbus/tutorial_nmap/master/iprange
function data_ip2dot function data_ip2dot
{ {
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}" (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && set "${DEBUG_OPTS}"
typeset _IP="${1}" typeset _IP="${1}"
typeset _W="" typeset _W=""
typeset _X="" typeset _X=""
typeset _Y="" typeset _Y=""
typeset _Z="" typeset _Z=""
_W=$(( (_IP >> 24) & 255 )) _W=$(( (_IP >> 24) & 255 ))
@ -617,21 +617,21 @@ case "${_BITS}" in
6) _OFFSET=67108864 ;; 6) _OFFSET=67108864 ;;
7) _OFFSET=33554432 ;; 7) _OFFSET=33554432 ;;
8) _OFFSET=16777216 ;; 8) _OFFSET=16777216 ;;
9) _OFFSET=8388608 ;; 9) _OFFSET=8388608 ;;
10) _OFFSET=4194304 ;; 10) _OFFSET=4194304 ;;
11) _OFFSET=2097152 ;; 11) _OFFSET=2097152 ;;
12) _OFFSET=1048576 ;; 12) _OFFSET=1048576 ;;
13) _OFFSET=524288 ;; 13) _OFFSET=524288 ;;
14) _OFFSET=262144 ;; 14) _OFFSET=262144 ;;
15) _OFFSET=131072 ;; 15) _OFFSET=131072 ;;
16) _OFFSET=65536 ;; 16) _OFFSET=65536 ;;
17) _OFFSET=32768 ;; 17) _OFFSET=32768 ;;
18) _OFFSET=16384 ;; 18) _OFFSET=16384 ;;
19) _OFFSET=8192 ;; 19) _OFFSET=8192 ;;
20) _OFFSET=4096 ;; 20) _OFFSET=4096 ;;
21) _OFFSET=2048 ;; 21) _OFFSET=2048 ;;
22) _OFFSET=1024 ;; 22) _OFFSET=1024 ;;
23) _OFFSET=512 ;; 23) _OFFSET=512 ;;
24) _OFFSET=256 ;; 24) _OFFSET=256 ;;
25) _OFFSET=128 ;; 25) _OFFSET=128 ;;
26) _OFFSET=64 ;; 26) _OFFSET=64 ;;
@ -691,11 +691,11 @@ return ${_RC}
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# @(#) FUNCTION: data_date2epoch() # @(#) FUNCTION: data_date2epoch()
# DOES: converts a given date into UNIX epoch seconds # DOES: converts a given date into UNIX epoch seconds
# EXPECTS: date formatted as individual parameters (in UTC time): # EXPECTS: date formatted as individual parameters (in UTC time):
# $1 : YYYY # $1 : YYYY
# $2 : MM # $2 : MM
# $3 : DD # $3 : DD
# $4 : HH # $4 : HH
# $5 : MM # $5 : MM
# $6 : SS # $6 : SS
# OUTPUTS: UNIX epoch seconds [number] # OUTPUTS: UNIX epoch seconds [number]
@ -711,25 +711,25 @@ typeset _DAY="${3}"
typeset _HOUR="${4}" typeset _HOUR="${4}"
typeset _MINUTE="${5}" typeset _MINUTE="${5}"
typeset _SECOND="${6}" typeset _SECOND="${6}"
typeset _DAYS_ACC typeset _DAYS_ACC
typeset _YEAR_DAY typeset _YEAR_DAY
typeset _EPOCH typeset _EPOCH
typeset _LEAP_YEARS typeset _LEAP_YEARS
set -A _DAYS_ACC 0 0 31 59 90 120 151 181 212 243 273 304 334 365 set -A _DAYS_ACC 0 0 31 59 90 120 151 181 212 243 273 304 334 365
# calculate day of year (counting from 0) # calculate day of year (counting from 0)
_YEAR_DAY=$(( (${_DAY} - 1) + ${_DAYS_ACC[${_MONTH}]} )) _YEAR_DAY=$(( (_DAY - 1) + _DAYS_ACC[_MONTH] ))
# calculate number of leap years # calculate number of leap years
_LEAP_YEARS=$(( (${_YEAR} - 1968) / 4 )) _LEAP_YEARS=$(( (_YEAR - 1968) / 4 ))
_LEAP_YEARS=$(( ${_LEAP_YEARS} - ${_YEAR} / 100 + ${_YEAR} / 400 + 15 )) _LEAP_YEARS=$(( _LEAP_YEARS - _YEAR / 100 + _YEAR / 400 + 15 ))
# adjust if we are still in Jan/Feb of leap year # adjust if we are still in Jan/Feb of leap year
[[ $((${_YEAR} % 4)) = 0 && ${_MONTH} < 3 ]] && _LEAP_YEARS=$(( ${_LEAP_YEARS} - 1 )) [[ $((_YEAR % 4)) = 0 && ${_MONTH} -lt 3 ]] && _LEAP_YEARS=$(( _LEAP_YEARS - 1 ))
# calculate the time since epoch # calculate the time since epoch
_EPOCH=$(( ((${_YEAR} - 1970) * 365 + ${_YEAR_DAY} + ${_LEAP_YEARS}) * 86400 _EPOCH=$(( ((_YEAR - 1970) * 365 + _YEAR_DAY + _LEAP_YEARS) * 86400
+ ${_HOUR} * 3600 + ${_MINUTE} * 60 + ${_SECOND} )) + _HOUR * 3600 + _MINUTE * 60 + _SECOND ))
print ${_EPOCH} print ${_EPOCH}
} }
@ -759,10 +759,10 @@ then
print "${_UNIX_EPOCH}" print "${_UNIX_EPOCH}"
return 1 return 1
else else
print "${_CONVERT_DATE}" print "${_CONVERT_DATE}"
fi fi
else else
print "${CONVERT_DATE}" print "${_CONVERT_DATE}"
fi fi
return 0 return 0

View File

@ -101,6 +101,7 @@ then
LINUX_INIT="systemd" LINUX_INIT="systemd"
elif [[ -r /usr/share/upstart ]] elif [[ -r /usr/share/upstart ]]
then then
# shellcheck disable=SC2034
LINUX_INIT="upstart" LINUX_INIT="upstart"
fi fi

View File

@ -33,7 +33,7 @@ function notify_eif
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/core/providers/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/core/providers/$0.conf"
typeset _VERSION="2018-05-12" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -53,7 +53,7 @@ typeset _SLEEP_PID=0
typeset _CHILD_RC=0 typeset _CHILD_RC=0
# handle config file # handle config file
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
@ -79,7 +79,7 @@ then
fi fi
# send EIF # send EIF
if [[ -x ${EIF_BIN} ]] if [[ -x ${_EIF_BIN} ]]
then then
# set trap on SIGUSR1 # set trap on SIGUSR1
trap "handle_timeout" USR1 trap "handle_timeout" USR1
@ -95,7 +95,7 @@ then
_SLEEP_PID=$! _SLEEP_PID=$!
# do POSTEIFMSG in the background # do POSTEIFMSG in the background
${EIF_BIN} -f ${EIF_ETC} -r ${EIF_SEVERITY} -m "${_EIF_MESSAGE}" \ ${_EIF_BIN} -f ${_EIF_ETC} -r ${_EIF_SEVERITY} -m "${_EIF_MESSAGE}" \
hostname=${HOST_NAME} sub_origin=part1 ${_EIF_CLASS} POST & hostname=${HOST_NAME} sub_origin=part1 ${_EIF_CLASS} POST &
CHILD_PID=$! CHILD_PID=$!
log "spawning child process with time-out of ${_TIME_OUT} secs for EIF notify [PID=${CHILD_PID}]" log "spawning child process with time-out of ${_TIME_OUT} secs for EIF notify [PID=${CHILD_PID}]"

View File

@ -30,7 +30,7 @@
function notify_mail function notify_mail
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -44,9 +44,7 @@ typeset _MAIL_FAIL_ID="$2"
typeset _HC_BODY="" typeset _HC_BODY=""
typeset _HC_STDOUT_LOG_SHORT="" typeset _HC_STDOUT_LOG_SHORT=""
typeset _HC_STDERR_LOG_SHORT="" typeset _HC_STDERR_LOG_SHORT=""
typeset _HC_MSG_ENTRY=""
typeset _MAIL_MSG_STC="" typeset _MAIL_MSG_STC=""
typeset _MAIL_MSG_TIME=""
typeset _MAIL_MSG_TEXT="" typeset _MAIL_MSG_TEXT=""
typeset _MAIL_INFO_TPL="${CONFIG_DIR}/core/templates/mail_info.tpl" typeset _MAIL_INFO_TPL="${CONFIG_DIR}/core/templates/mail_info.tpl"
typeset _MAIL_HEADER_TPL="${CONFIG_DIR}/core/templates/mail_header.tpl" typeset _MAIL_HEADER_TPL="${CONFIG_DIR}/core/templates/mail_header.tpl"
@ -67,10 +65,13 @@ typeset _TMP1_MAIL_FILE="${TMP_DIR}/.${SCRIPT_NAME}.mail.tmp1.$$"
typeset _TMP2_MAIL_FILE="${TMP_DIR}/.${SCRIPT_NAME}.mail.tmp2.$$" typeset _TMP2_MAIL_FILE="${TMP_DIR}/.${SCRIPT_NAME}.mail.tmp2.$$"
typeset _NOW="$(date '+%d-%h-%Y %H:%M:%S')" typeset _NOW="$(date '+%d-%h-%Y %H:%M:%S')"
typeset _SUBJ_MSG="[${HOST_NAME}] HC ${_MAIL_HC} failed (${_NOW})" typeset _SUBJ_MSG="[${HOST_NAME}] HC ${_MAIL_HC} failed (${_NOW})"
# shellcheck disable=SC2034
typeset _FROM_MSG="${EXEC_USER}@${HOST_NAME}" typeset _FROM_MSG="${EXEC_USER}@${HOST_NAME}"
typeset _dummy=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_MAIL_FILE} ]] && rm -f ${_TMP1_MAIL_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_MAIL_FILE} ]] && rm -f ${_TMP2_MAIL_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_MAIL_FILE} ]] && rm -f ${_TMP1_MAIL_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_MAIL_FILE} ]] && rm -f ${_TMP2_MAIL_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_TMP1_MAIL_FILE} ]] && rm -f ${_TMP1_MAIL_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_MAIL_FILE} ]] && rm -f ${_TMP2_MAIL_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# set short paths for STDOUT/STDERR logs # set short paths for STDOUT/STDERR logs
@ -133,7 +134,7 @@ $(sed 's/[\$`]/\\&/g;s/<## @\([^ ]*\) ##>/${\1}/g' <${_MAIL_HEADER_TPL})
__EOT" >>${_TMP1_MAIL_FILE} __EOT" >>${_TMP1_MAIL_FILE}
# create body part (from $HC_MSG_VAR) # create body part (from $HC_MSG_VAR)
print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _MAIL_MSG_STC _MAIL_MSG_TIME _MAIL_MSG_TEXT _MAIL_MSG_CUR_VAL _MAIL_MSG_EXP_VAL print "${HC_MSG_VAR}" | while IFS=${MSG_SEP} read _MAIL_MSG_STC _ _MAIL_MSG_TEXT _MAIL_MSG_CUR_VAL _MAIL_MSG_EXP_VAL
do do
# magically unquote if needed # magically unquote if needed
if [[ -n "${_MAIL_MSG_TEXT}" ]] if [[ -n "${_MAIL_MSG_TEXT}" ]]
@ -159,7 +160,7 @@ do
then then
_MAIL_MSG_EXP_VAL=$(data_magic_unquote "${_MAIL_MSG_EXP_VAL}") _MAIL_MSG_EXP_VAL=$(data_magic_unquote "${_MAIL_MSG_EXP_VAL}")
fi fi
fi fi
if (( _MAIL_MSG_STC > 0 )) if (( _MAIL_MSG_STC > 0 ))
then then
_HC_BODY=$(printf "%s\n%s\n" "${_HC_BODY}" "${_MAIL_MSG_TEXT}") _HC_BODY=$(printf "%s\n%s\n" "${_HC_BODY}" "${_MAIL_MSG_TEXT}")
@ -177,18 +178,22 @@ __EOT" >>${_TMP1_MAIL_FILE}
_MAIL_STDOUT_LOG="${EVENTS_DIR}/${DIR_PREFIX}/${_MAIL_FAIL_ID}/${_HC_STDOUT_LOG_SHORT%.*}" _MAIL_STDOUT_LOG="${EVENTS_DIR}/${DIR_PREFIX}/${_MAIL_FAIL_ID}/${_HC_STDOUT_LOG_SHORT%.*}"
if [[ -s "${_MAIL_STDOUT_LOG}" ]] if [[ -s "${_MAIL_STDOUT_LOG}" ]]
then then
# shellcheck disable=SC2034
_MAIL_STDOUT_MSG="${_MAIL_STDOUT_LOG}" _MAIL_STDOUT_MSG="${_MAIL_STDOUT_LOG}"
_MAIL_ATTACH_BIT="-a ${_MAIL_STDOUT_LOG}" _MAIL_ATTACH_BIT="-a ${_MAIL_STDOUT_LOG}"
else else
# shellcheck disable=SC2034
_MAIL_STDOUT_MSG="no log file available" _MAIL_STDOUT_MSG="no log file available"
fi fi
# HC STDERR? (drop the .$$ bit) # HC STDERR? (drop the .$$ bit)
_MAIL_STDERR_LOG="${EVENTS_DIR}/${DIR_PREFIX}/${_MAIL_FAIL_ID}/${_HC_STDERR_LOG_SHORT%.*}" _MAIL_STDERR_LOG="${EVENTS_DIR}/${DIR_PREFIX}/${_MAIL_FAIL_ID}/${_HC_STDERR_LOG_SHORT%.*}"
if [[ -s "${_MAIL_STDERR_LOG}" ]] if [[ -s "${_MAIL_STDERR_LOG}" ]]
then then
# shellcheck disable=SC2034
_MAIL_STDERR_MSG="${_MAIL_STDERR_LOG}" _MAIL_STDERR_MSG="${_MAIL_STDERR_LOG}"
_MAIL_ATTACH_BIT="${_MAIL_ATTACH_BIT} -a ${_MAIL_STDERR_LOG}" _MAIL_ATTACH_BIT="${_MAIL_ATTACH_BIT} -a ${_MAIL_STDERR_LOG}"
else else
# shellcheck disable=SC2034
_MAIL_STDERR_MSG="no log file available" _MAIL_STDERR_MSG="no log file available"
fi fi
@ -235,7 +240,7 @@ fi
# clean up temporary files # clean up temporary files
[[ -f ${_TMP1_MAIL_FILE} ]] && rm -f ${_TMP1_MAIL_FILE} >/dev/null 2>&1 [[ -f ${_TMP1_MAIL_FILE} ]] && rm -f ${_TMP1_MAIL_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_MAIL_FILE} ]] && rm -f ${_TMP2_MAIL_FILE} >/dev/null 2>&1 [[ -f ${_TMP2_MAIL_FILE} ]] && rm -f ${_TMP2_MAIL_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -31,7 +31,7 @@ function notify_sms
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/core/providers/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/core/providers/$0.conf"
typeset _VERSION="2018-05-14" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -48,10 +48,10 @@ typeset _CURL_BIN=""
typeset _SMS_PROVIDERS="" typeset _SMS_PROVIDERS=""
typeset _SMS_KAPOW_SEND_URL="" typeset _SMS_KAPOW_SEND_URL=""
typeset _SMS_KAPOW_USER="" typeset _SMS_KAPOW_USER=""
typeset _SMS_KAPOW_PASSWORD="" typeset _SMS_KAPOW_PASS=""
# handle config file # handle config file
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
@ -84,8 +84,8 @@ then
then then
warn "no value set for 'SMS_KAPOW_USER' in ${_CONFIG_FILE}" warn "no value set for 'SMS_KAPOW_USER' in ${_CONFIG_FILE}"
return 1 return 1
fi fi
_SMS_KAPOW_PASS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'SMS_KAPOW_PASS') _SMS_KAPOW_PASS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'SMS_KAPOW_PASS')
if [[ -z "${_SMS_KAPOW_PASS}" ]] if [[ -z "${_SMS_KAPOW_PASS}" ]]
then then
warn "no value set for 'SMS_KAPOW_PASS' in ${_CONFIG_FILE}" warn "no value set for 'SMS_KAPOW_PASS' in ${_CONFIG_FILE}"
@ -108,7 +108,7 @@ case "${ARG_SMS_PROVIDER}" in
then then
${_CURL_BIN} -s --url "${_SMS_KAPOW_SEND_URL}?username=${_SMS_KAPOW_USER}&password=${_SMS_KAPOW_PASS}&mobile=${ARG_SMS_TO}&sms=${_SMS_TEXT}" >/dev/null 2>&1 ${_CURL_BIN} -s --url "${_SMS_KAPOW_SEND_URL}?username=${_SMS_KAPOW_USER}&password=${_SMS_KAPOW_PASS}&mobile=${ARG_SMS_TO}&sms=${_SMS_TEXT}" >/dev/null 2>&1
else else
${_CURL_BIN} --url "${_SMS_KAPOW_SEND_URL}?username=${_SMS_KAPOW_USER}&password=${_SMS_KAPOW_PASS}&mobile=${ARG_SMS_TO}&sms=${_SMS_TEXT}" ${_CURL_BIN} --url "${_SMS_KAPOW_SEND_URL}?username=${_SMS_KAPOW_USER}&password=${_SMS_KAPOW_PASS}&mobile=${ARG_SMS_TO}&sms=${_SMS_TEXT}"
fi fi
else else
die "unable to send SMS - curl is not installed here" die "unable to send SMS - curl is not installed here"

View File

@ -30,7 +30,7 @@
function report_std function report_std
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-27" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX,HP-UX,Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -49,7 +49,6 @@ typeset _HC_LAST_FAIL_ID="-"
typeset _ID_NEEDLE="" typeset _ID_NEEDLE=""
typeset _CHECK_FILE="" typeset _CHECK_FILE=""
typeset _LOG_STASH="" typeset _LOG_STASH=""
typeset _REPORT_LINE=""
typeset _SORT_CMD="" typeset _SORT_CMD=""
# which files do we need to examine # which files do we need to examine
@ -65,6 +64,7 @@ fi
if (( ARG_LAST != 0 )) if (( ARG_LAST != 0 ))
then then
printf "\n| %-30s | %-20s | %-14s | %-4s\n" "HC" "Timestamp" "FAIL ID" "STC (combined value)" printf "\n| %-30s | %-20s | %-14s | %-4s\n" "HC" "Timestamp" "FAIL ID" "STC (combined value)"
# shellcheck disable=SC2183
printf "%100s\n" | tr ' ' - printf "%100s\n" | tr ' ' -
# loop over all HCs # loop over all HCs
list_hc "list" | while read -r _HC_LAST list_hc "list" | while read -r _HC_LAST
@ -136,6 +136,7 @@ else
then then
printf "\n| %-20s | %-14s | %-30s | %-s\n" \ printf "\n| %-20s | %-14s | %-30s | %-s\n" \
"Timestamp" "FAIL ID" "HC" "Message" "Timestamp" "FAIL ID" "HC" "Message"
# shellcheck disable=SC2183
printf "%120s\n" | tr ' ' - printf "%120s\n" | tr ' ' -
# print failed events # print failed events
@ -169,6 +170,7 @@ else
' 2>/dev/null ' 2>/dev/null
_DIR_PREFIX="$(expr substr ${ARG_FAIL_ID} 1 4)-$(expr substr ${ARG_FAIL_ID} 5 2)" _DIR_PREFIX="$(expr substr ${ARG_FAIL_ID} 1 4)-$(expr substr ${ARG_FAIL_ID} 5 2)"
# shellcheck disable=SC2183
printf "%37sSTDOUT%37s\n" | tr ' ' -; printf "%37sSTDOUT%37s\n" | tr ' ' -;
# display non-empty STDOUT file(s) # display non-empty STDOUT file(s)
if [[ -n "$(du -a ${EVENTS_DIR}/${_DIR_PREFIX}/${ARG_FAIL_ID}/*.stdout.log 2>/dev/null | awk '$1*512 > 0 {print $2}')" ]] if [[ -n "$(du -a ${EVENTS_DIR}/${_DIR_PREFIX}/${ARG_FAIL_ID}/*.stdout.log 2>/dev/null | awk '$1*512 > 0 {print $2}')" ]]
@ -178,6 +180,7 @@ else
printf "%-s\n" "No STDOUT found" printf "%-s\n" "No STDOUT found"
fi fi
# shellcheck disable=SC2183
printf "%37sSTDERR%37s\n" | tr ' ' -; printf "%37sSTDERR%37s\n" | tr ' ' -;
# display non-empty STDERR file(s) # display non-empty STDERR file(s)
if [[ -n "$(du -a ${EVENTS_DIR}/${_DIR_PREFIX}/${ARG_FAIL_ID}/*.stderr.log 2>/dev/null | awk '$1*512 > 0 {print $2}')" ]] if [[ -n "$(du -a ${EVENTS_DIR}/${_DIR_PREFIX}/${ARG_FAIL_ID}/*.stderr.log 2>/dev/null | awk '$1*512 > 0 {print $2}')" ]]
@ -187,6 +190,7 @@ else
printf "%-s\n" "No STDERR found" printf "%-s\n" "No STDERR found"
fi fi
# shellcheck disable=SC2183
printf "%80s\n" | tr ' ' - printf "%80s\n" | tr ' ' -
fi fi
else else

View File

@ -25,6 +25,7 @@
# @(#) 2013-05-15: initial version [Patrick Van der Veken] # @(#) 2013-05-15: initial version [Patrick Van der Veken]
# @(#) 2013-05-29: small fix errpt last check time [Patrick Van der Veken] # @(#) 2013-05-29: small fix errpt last check time [Patrick Van der Veken]
# @(#) 2013-06-24: big fix errpt last check time [Patrick Van der Veken] # @(#) 2013-06-24: big fix errpt last check time [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@
function check_aix_errpt function check_aix_errpt
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2013-06-24" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -47,7 +48,6 @@ typeset _STC=0
typeset _LAST_TIME_CHECK="" typeset _LAST_TIME_CHECK=""
typeset _LAST_TIME_FILE="" typeset _LAST_TIME_FILE=""
typeset _LABEL="" typeset _LABEL=""
typeset _IDENTIFIER=""
typeset _NEW_CHECK_TIME="" typeset _NEW_CHECK_TIME=""
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -56,7 +56,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -66,7 +66,7 @@ if [[ -r ${_LAST_TIME_FILE} ]]
then then
if [[ -s ${_LAST_TIME_FILE} ]] if [[ -s ${_LAST_TIME_FILE} ]]
then then
_LAST_TIME_CHECK="<${_LAST_TIME_FILE})" _LAST_TIME_CHECK="<${_LAST_TIME_FILE})"
else else
warn "$0: no last known check date/time" warn "$0: no last known check date/time"
fi fi
@ -100,12 +100,12 @@ fi
# but we can live it :-)) # but we can live it :-))
_NEW_CHECK_TIME="$(errpt 2>/dev/null | head -n 2 | tail -n 1 | awk '{print $2}')" _NEW_CHECK_TIME="$(errpt 2>/dev/null | head -n 2 | tail -n 1 | awk '{print $2}')"
# blank result indicates either no errpt entries or exist the time call failed # blank result indicates either no errpt entries or exist the time call failed
if [[ -n "${_NEW_CHECK_TIME}" ]] if [[ -n "${_NEW_CHECK_TIME}" ]]
then then
print "${_NEW_CHECK_TIME}" >${_LAST_TIME_FILE} print "${_NEW_CHECK_TIME}" >${_LAST_TIME_FILE}
(( $? == 0)) || warn "$0: unable to write last check time to ${_LAST_TIME_FILE}" (( $? == 0)) || warn "$0: unable to write last check time to ${_LAST_TIME_FILE}"
else else
warn "$0: no last check time received from errpt (no entries)" warn "$0: no last check time received from errpt (no entries)"
fi fi
# handle results # handle results

View File

@ -23,6 +23,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2013-05-27: initial version [Patrick Van der Veken] # @(#) 2013-05-27: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -32,7 +33,7 @@ function check_aix_file_age
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2013-05-27" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="AIX" # uname -s match typeset _SUPPORTED_PLATFORMS="AIX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -44,7 +45,7 @@ typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _ENTRY="" typeset _ENTRY=""
typeset _AGE_CHECK=="" typeset _AGE_CHECK=""
typeset _FILE_PATH="" typeset _FILE_PATH=""
typeset _FILE_AGE="" typeset _FILE_AGE=""
typeset _FILE_NAME="" typeset _FILE_NAME=""
@ -56,57 +57,57 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
# perform check # perform check
grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _ENTRY grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _ENTRY
do do
# field split # field split
_FILE_PATH="$(print ${_ENTRY%%;*})" _FILE_PATH="$(print ${_ENTRY%%;*})"
_FILE_AGE="$(print ${_ENTRY##*;})" _FILE_AGE="$(print ${_ENTRY##*;})"
# split file/dir # split file/dir
_FILE_NAME="$(print ${_FILE_PATH##*/})" _FILE_NAME="$(print ${_FILE_PATH##*/})"
_FILE_DIR="$(print ${_FILE_PATH%/*})" _FILE_DIR="$(print ${_FILE_PATH%/*})"
# check config # check config
if [ \( -z "${_FILE_PATH}" \) -a \( -z "${_FILE_AGE}" \) ] if [[ -z "${_FILE_PATH}" ]] && [[ -z "${_FILE_AGE}" ]]
then then
warn "missing values in configuration file at ${_CONFIG_FILE}" warn "missing values in configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
case "${_FILE_AGE}" in case "${_FILE_AGE}" in
+([0-9])*(.)*([0-9])) +([0-9])*(.)*([0-9]))
# numeric, OK # numeric, OK
;; ;;
*) *)
# not numeric # not numeric
warn "invalid file age value '${_FILE_AGE}' in configuration file at ${_CONFIG_FILE}" warn "invalid file age value '${_FILE_AGE}' in configuration file at ${_CONFIG_FILE}"
return 1 return 1
;; ;;
esac esac
# perform check # perform check
if [[ ! -r "${_FILE_PATH}" ]] if [[ ! -r "${_FILE_PATH}" ]]
then then
_MSG="unable to read or access requested file at ${_FILE_PATH}" _MSG="unable to read or access requested file at ${_FILE_PATH}"
_STC=1 _STC=1
else else
_AGE_CHECK=$(find "${_FILE_DIR}" -type f -name "${_FILE_NAME}" -mmin -"${_FILE_AGE}") _AGE_CHECK=$(find "${_FILE_DIR}" -type f -name "${_FILE_NAME}" -mmin -"${_FILE_AGE}")
if (( $? != 0 )) if (( $? != 0 ))
then then
warn "unable to execute file age test for ${_FILE_PATH}" warn "unable to execute file age test for ${_FILE_PATH}"
return 1 return 1
fi fi
if [[ -z "${_AGE_CHECK}" ]] if [[ -z "${_AGE_CHECK}" ]]
then then
@ -116,7 +117,7 @@ do
_MSG="file age of ${_FILE_AGE} has not expired on ${_FILE_PATH}" _MSG="file age of ${_FILE_AGE} has not expired on ${_FILE_PATH}"
fi fi
fi fi
# handle unit result # handle unit result
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
_STC=0 _STC=0

View File

@ -24,6 +24,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-05-18: initial version [Patrick Van der Veken] # @(#) 2017-05-18: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_aix_file_change
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2017-05-18" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -44,7 +45,6 @@ typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _STC_COUNT=0
typeset _DO_META_CHECK=0 typeset _DO_META_CHECK=0
typeset _CFG_STATE_FILE="" typeset _CFG_STATE_FILE=""
typeset _STATE_FILE="" typeset _STATE_FILE=""
@ -65,11 +65,13 @@ typeset _TMP_EXCL_FILE="${TMP_DIR}/.$0.tmp_excl.$$"
set -o noglob # no file globbing set -o noglob # no file globbing
# set local trap for clean-up # set local trap for clean-up
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1;
return 0" 0 return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
@ -133,6 +135,7 @@ fi
# check state file & TMP_FILEs # check state file & TMP_FILEs
[[ -r ${_STATE_FILE} ]] || { [[ -r ${_STATE_FILE} ]] || {
# shellcheck disable=SC2188
>${_STATE_FILE} >${_STATE_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create new state file at ${_STATE_FILE}" warn "failed to create new state file at ${_STATE_FILE}"
@ -140,21 +143,25 @@ fi
} }
log "created new state file at ${_STATE_FILE}" log "created new state file at ${_STATE_FILE}"
} }
# shellcheck disable=SC2188
>${_TMP_INCL_FILE} >${_TMP_INCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_INCL_FILE}" warn "failed to create temporary file at ${_TMP_INCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP_EXCL_FILE} >${_TMP_EXCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_EXCL_FILE}" warn "failed to create temporary file at ${_TMP_EXCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP1_FILE} >${_TMP1_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP1_FILE}" warn "failed to create temporary file at ${_TMP1_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP2_FILE} >${_TMP2_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP2_FILE}" warn "failed to create temporary file at ${_TMP2_FILE}"
@ -163,7 +170,7 @@ fi
# build list of configured objects: inclusion # build list of configured objects: inclusion
grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _INCL_OBJECT while IFS=':' read _ _INCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -187,7 +194,7 @@ done
# build list of configured objects: exclusion # build list of configured objects: exclusion
grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _EXCL_OBJECT while IFS=':' read _ _EXCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -337,12 +344,6 @@ then
} }
fi fi
# clean up temporary files
[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -27,6 +27,7 @@
# @(#) 2018-05-11: initial version [Patrick Van der Veken] # @(#) 2018-05-11: initial version [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-18: changed boot status [Patrick Van der Veken] # @(#) 2018-10-18: changed boot status [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -37,7 +38,7 @@ function check_hpux_drd_status
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _DRD_BIN="/opt/drd/bin/drd" typeset _DRD_BIN="/opt/drd/bin/drd"
typeset _VERSION="2018-10-18" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -47,7 +48,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _RC=0 typeset _RC=0
typeset _CHECK_CLONE="" typeset _CHECK_CLONE=""
typeset _CHECK_SYNC="" typeset _CHECK_SYNC=""
@ -126,8 +126,7 @@ fi
if (( _RC == 0 )) && (( $(grep -c -E -e ".*Information succeeded.*" ${HC_STDOUT_LOG} 2>/dev/null) > 0 )) if (( _RC == 0 )) && (( $(grep -c -E -e ".*Information succeeded.*" ${HC_STDOUT_LOG} 2>/dev/null) > 0 ))
then then
# convert NOW to epoch (pass date values as unquoted parameters) # convert NOW to epoch (pass date values as unquoted parameters)
#_NOW_EPOCH=$(data_date2epoch "$(date '+%Y')" "$(date '+%m')" "$(date '+%d')" "$(date '+%H')" "$(date '+%M')" "$(date '+%S')") _NOW_EPOCH=$(data_date2epoch "$(date '+%Y')" "$(date '+%m')" "$(date '+%d')" "$(date '+%H')" "$(date '+%M')" "$(date '+%S')")
_NOW_EPOCH=$(data_date2epoch $(date '+%Y %m %d %H %M %S'))
# get devices # get devices
_ORIGINAL_DISK=$(data_strip_space "$(grep "Original Disk:" ${HC_STDOUT_LOG} 2>/dev/null | cut -f2 -d':')") _ORIGINAL_DISK=$(data_strip_space "$(grep "Original Disk:" ${HC_STDOUT_LOG} 2>/dev/null | cut -f2 -d':')")

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2013-05-27: initial version [Patrick Van der Veken] # @(#) 2013-05-27: initial version [Patrick Van der Veken]
# @(#) 2013-05-29: added local trap for cleanup [Patrick Van der Veken] # @(#) 2013-05-29: added local trap for cleanup [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_hpux_file_age
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2013-05-29" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -47,15 +48,15 @@ typeset _STC=0
typeset _REF_FILE="${TMP_DIR}/.$0.ref.$$" typeset _REF_FILE="${TMP_DIR}/.$0.ref.$$"
typeset _DO_REF=0 typeset _DO_REF=0
typeset _ENTRY="" typeset _ENTRY=""
typeset _REF_TIME=""
typeset _AGE_CHECK==""
typeset _FILE_PATH="" typeset _FILE_PATH=""
typeset _FILE_AGE="" typeset _FILE_AGE=""
typeset _FILE_NAME="" typeset _FILE_NAME=""
typeset _FILE_DIR="" typeset _FILE_DIR=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_REF_FILE} ]] && rm -f ${_REF_FILE} >/dev/null 2>&1; return 0" 0 trap "[[ -f ${_REF_FILE} ]] && rm -f ${_REF_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_REF_FILE} ]] && rm -f ${_REF_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_REF_FILE} ]] && rm -f ${_REF_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -88,7 +89,7 @@ do
_FILE_DIR=$(print "${_FILE_PATH%/*}") _FILE_DIR=$(print "${_FILE_PATH%/*}")
# check config # check config
if [ \( -z "${_FILE_PATH}" \) -a \( -z "${_FILE_AGE}" \) ] if [[ -z "${_FILE_PATH}" ]] && [[ -z "${_FILE_AGE}" ]]
then then
warn "missing values in configuration file at ${_CONFIG_FILE}" warn "missing values in configuration file at ${_CONFIG_FILE}"
return 1 return 1

View File

@ -24,6 +24,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-05-18: initial version [Patrick Van der Veken] # @(#) 2017-05-18: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_hpux_file_change
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2017-05-18" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -44,7 +45,6 @@ typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _STC_COUNT=0
typeset _DO_META_CHECK=0 typeset _DO_META_CHECK=0
typeset _CFG_STATE_FILE="" typeset _CFG_STATE_FILE=""
typeset _STATE_FILE="" typeset _STATE_FILE=""
@ -65,11 +65,13 @@ typeset _TMP_EXCL_FILE="${TMP_DIR}/.$0.tmp_excl.$$"
set -o noglob # no file globbing set -o noglob # no file globbing
# set local trap for clean-up # set local trap for clean-up
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1;
return 0" 0 return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
@ -133,6 +135,7 @@ fi
# check state file & TMP_FILEs # check state file & TMP_FILEs
[[ -r ${_STATE_FILE} ]] || { [[ -r ${_STATE_FILE} ]] || {
# shellcheck disable=SC2188
>${_STATE_FILE} >${_STATE_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create new state file at ${_STATE_FILE}" warn "failed to create new state file at ${_STATE_FILE}"
@ -140,21 +143,25 @@ fi
} }
log "created new state file at ${_STATE_FILE}" log "created new state file at ${_STATE_FILE}"
} }
# shellcheck disable=SC2188
>${_TMP_INCL_FILE} >${_TMP_INCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_INCL_FILE}" warn "failed to create temporary file at ${_TMP_INCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP_EXCL_FILE} >${_TMP_EXCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_EXCL_FILE}" warn "failed to create temporary file at ${_TMP_EXCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP1_FILE} >${_TMP1_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP1_FILE}" warn "failed to create temporary file at ${_TMP1_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP2_FILE} >${_TMP2_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP2_FILE}" warn "failed to create temporary file at ${_TMP2_FILE}"
@ -163,7 +170,7 @@ fi
# build list of configured objects: inclusion # build list of configured objects: inclusion
grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _INCL_OBJECT while IFS=':' read _ _INCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -187,7 +194,7 @@ done
# build list of configured objects: exclusion # build list of configured objects: exclusion
grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _EXCL_OBJECT while IFS=':' read _ _EXCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -337,12 +344,6 @@ then
} }
fi fi
# clean up temporary files
[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -25,6 +25,7 @@
# @(#) 2016-04-04: original version [Patrick Van der Veken] # @(#) 2016-04-04: original version [Patrick Van der Veken]
# @(#) 2016-12-02: add support for ignore_missing_fs option [Patrick Van der Veken] # @(#) 2016-12-02: add support for ignore_missing_fs option [Patrick Van der Veken]
# @(#) 2017-07-31: added support for current/expected value output [Patrick Van der Veken] # @(#) 2017-07-31: added support for current/expected value output [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -34,7 +35,7 @@ function check_hpux_fs_mounts_options
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2017-07-31" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -48,7 +49,6 @@ typeset _STC=0
typeset _CONFIG_FS="" typeset _CONFIG_FS=""
typeset _CONFIG_OPTS="" typeset _CONFIG_OPTS=""
typeset _CURR_OPTS="" typeset _CURR_OPTS=""
typeset _DUMMY=""
typeset _IGNORE_FS="" typeset _IGNORE_FS=""
typeset _IS_ACTIVE=0 typeset _IS_ACTIVE=0
typeset _FS_ENTRY="" typeset _FS_ENTRY=""
@ -86,7 +86,7 @@ mount >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG}
# check for each configured file system # check for each configured file system
grep -i '^fs:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^fs:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _CONFIG_FS _CONFIG_OPTS while IFS=':' read _ _CONFIG_FS _CONFIG_OPTS
do do
# check for active FS # check for active FS
_IS_ACTIVE=$(grep -c -E -e "^${_CONFIG_FS}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null) _IS_ACTIVE=$(grep -c -E -e "^${_CONFIG_FS}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null)

View File

@ -23,6 +23,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-05-18: initial version [Patrick Van der Veken] # @(#) 2017-05-18: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -31,7 +32,7 @@
function check_hpux_guid_status function check_hpux_guid_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2017-05-18" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -51,7 +52,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -63,7 +64,7 @@ then
if [[ -n "${_GUID_PID}" ]] if [[ -n "${_GUID_PID}" ]]
then then
# get PID list without heading # get PID list without heading
(( $(UNIX95= ps -o pid= -p ${_GUID_PID}| wc -l) == 0 )) && _STC=1 (( $(UNIX95='' ps -o pid= -p ${_GUID_PID}| wc -l) == 0 )) && _STC=1
else else
# not running # not running
_RC=1 _RC=1

View File

@ -25,6 +25,7 @@
# @(#) 2017-06-01: initial version [Patrick Van der Veken] # @(#) 2017-06-01: initial version [Patrick Van der Veken]
# @(#) 2017-06-08: return 1 on error [Patrick Van der Veken] # @(#) 2017-06-08: return 1 on error [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_hpux_hpvm_vpar_status
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _HPVMSTATUS_BIN="/opt/hpvm/bin/hpvmstatus" typeset _HPVMSTATUS_BIN="/opt/hpvm/bin/hpvmstatus"
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -63,7 +64,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -81,22 +82,22 @@ ${_HPVMSTATUS_BIN} -M >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG}
# dump debug info # dump debug info
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 0 return 0
} }
# check configuration values # check configuration values
grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _PAR_ENTRY grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _PAR_ENTRY
do do
# field split # field split
_PAR_ID=$(print "${_PAR_ENTRY}" | cut -f1 -d';') _PAR_ID=$(print "${_PAR_ENTRY}" | cut -f1 -d';')
_PAR_CFG_STATUS=$(data_lc $(print "${_PAR_ENTRY}" | cut -f2 -d';')) _PAR_CFG_STATUS=$(data_lc "$(print \"${_PAR_ENTRY}\" | cut -f2 -d';')")
_PAR_CFG_BOOT=$(data_lc $(print "${_PAR_ENTRY}" | cut -f3 -d';')) _PAR_CFG_BOOT=$(data_lc "$(print \"${_PAR_ENTRY}\" | cut -f3 -d';')")
# check configuration # check configuration
case "${_PAR_ID}" in case "${_PAR_ID}" in
+([0-9])*(.)*([0-9])) +([0-9])*(.)*([0-9]))
# numeric, OK # numeric, OK
;; ;;
*) *)
# not numeric # not numeric
warn "invalid partition ID '${_PAR_ID}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid partition ID '${_PAR_ID}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
@ -105,57 +106,57 @@ do
case "${_PAR_CFG_STATUS}" in case "${_PAR_CFG_STATUS}" in
on|off) on|off)
;; ;;
*) *)
warn "invalid partition status '${_PAR_CFG_STATUS}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid partition status '${_PAR_CFG_STATUS}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
;; ;;
esac esac
case "${_PAR_CFG_BOOT}" in case "${_PAR_CFG_BOOT}" in
auto|manual) auto|manual)
;; ;;
*) *)
warn "invalid partition boot value '${_PAR_CFG_BOOT}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid partition boot value '${_PAR_CFG_BOOT}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
;; ;;
esac esac
_LINE_COUNT=$(( _LINE_COUNT + 1 )) _LINE_COUNT=$(( _LINE_COUNT + 1 ))
done done
# perform checks # perform checks
grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _PAR_ENTRY grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _PAR_ENTRY
do do
# field split # field split
_PAR_ID=$(print "${_PAR_ENTRY}" | cut -f1 -d';') _PAR_ID=$(print "${_PAR_ENTRY}" | cut -f1 -d';')
_PAR_CFG_STATUS=$(data_lc $(print "${_PAR_ENTRY}" | cut -f2 -d';')) _PAR_CFG_STATUS=$(data_lc "$(print \"${_PAR_ENTRY}\" | cut -f2 -d';')")
_PAR_CFG_BOOT=$(data_lc $(print "${_PAR_ENTRY}" | cut -f3 -d';')) _PAR_CFG_BOOT=$(data_lc "$(print \"${_PAR_ENTRY}\" | cut -f3 -d';')")
# check run-time values (we need to make the needle sufficiently less greedy) # check run-time values (we need to make the needle sufficiently less greedy)
_PAR_MATCH=$(grep -i "^.*:.*:${_PAR_ID}::Integrity" ${HC_STDOUT_LOG} 2>/dev/null) _PAR_MATCH=$(grep -i "^.*:.*:${_PAR_ID}::Integrity" ${HC_STDOUT_LOG} 2>/dev/null)
if [[ -n "${_PAR_MATCH}" ]] if [[ -n "${_PAR_MATCH}" ]]
then then
# field split # field split
_PAR_RUN_STATUS=$(data_lc $(print "${_PAR_MATCH}" | cut -f11 -d':')) _PAR_RUN_STATUS=$(data_lc "$(print \"${_PAR_MATCH}\" | cut -f11 -d':')")
_PAR_RUN_BOOT=$(data_lc $(print "${_PAR_MATCH}" | cut -f12 -d':')) _PAR_RUN_BOOT=$(data_lc "$(print \"${_PAR_MATCH}\" | cut -f12 -d':')")
if [[ "${_PAR_RUN_STATUS}" = "${_PAR_CFG_STATUS}" ]] if [[ "${_PAR_RUN_STATUS}" = "${_PAR_CFG_STATUS}" ]]
then then
_MSG="partition ${_PAR_ID} has a correct status [${_PAR_RUN_STATUS}]" _MSG="partition ${_PAR_ID} has a correct status [${_PAR_RUN_STATUS}]"
_STC=0 _STC=0
else else
_MSG="partition ${_PAR_ID} has a wrong status [${_PAR_RUN_STATUS}]" _MSG="partition ${_PAR_ID} has a wrong status [${_PAR_RUN_STATUS}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_PAR_RUN_STATUS}" "${_PAR_CFG_STATUS}" log_hc "$0" ${_STC} "${_MSG}" "${_PAR_RUN_STATUS}" "${_PAR_CFG_STATUS}"
if [[ "${_PAR_RUN_BOOT}" = "${_PAR_CFG_BOOT}" ]] if [[ "${_PAR_RUN_BOOT}" = "${_PAR_CFG_BOOT}" ]]
then then
_MSG="partition ${_PAR_ID} has a correct boot flag [${_PAR_RUN_BOOT}]" _MSG="partition ${_PAR_ID} has a correct boot flag [${_PAR_RUN_BOOT}]"
_STC=0 _STC=0
else else
_MSG="partition ${_PAR_ID} has a wrong boot flag [${_PAR_RUN_BOOT}]" _MSG="partition ${_PAR_ID} has a wrong boot flag [${_PAR_RUN_BOOT}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_PAR_RUN_BOOT}" "${_PAR_CFG_BOOT}" log_hc "$0" ${_STC} "${_MSG}" "${_PAR_RUN_BOOT}" "${_PAR_CFG_BOOT}"
else else
warn "could not determine status for partition ${_PAR_ID} from command output {${_HPVMSTATUS_BIN}}" warn "could not determine status for partition ${_PAR_ID} from command output {${_HPVMSTATUS_BIN}}"
_RC=1 _RC=1

View File

@ -23,6 +23,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-04-23: initial version [Patrick Van der Veken] # @(#) 2017-04-23: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -32,7 +33,7 @@ function check_hpux_httpd_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _HTTPD_PID_FILE="/var/run/httpd/httpd.pid" typeset _HTTPD_PID_FILE="/var/run/httpd/httpd.pid"
typeset _VERSION="2017-04-23" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -41,7 +42,7 @@ typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}" init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _HTTPD_CHECKCONF_BIN="" typeset _HTTPD_BIN=""
typeset _HTTPD_PID="" typeset _HTTPD_PID=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
@ -65,7 +66,7 @@ then
if [[ -n "${_HTTPD_PID}" ]] if [[ -n "${_HTTPD_PID}" ]]
then then
# get PID list without heading # get PID list without heading
(( $(UNIX95= ps -o pid= -p ${_HTTPD_PID}| wc -l) == 0 )) && _STC=1 (( $(UNIX95='' ps -o pid= -p ${_HTTPD_PID}| wc -l) == 0 )) && _STC=1
else else
# not running # not running
_RC=1 _RC=1

View File

@ -26,6 +26,7 @@
# @(#) 2016-05-26: added a simple exclusion list for hosts as configurable # @(#) 2016-05-26: added a simple exclusion list for hosts as configurable
# @(#) parameter [Patrick Van der Veken] # @(#) parameter [Patrick Van der Veken]
# @(#) 2016-06-03: small fix [Patrick Van der Veken] # @(#) 2016-06-03: small fix [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -37,7 +38,7 @@ function check_hpux_ignite_backup
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
# backup DONE identifier # backup DONE identifier
typeset _IGNITE_NEEDLE="^DONE" typeset _IGNITE_NEEDLE="^DONE"
typeset _VERSION="2016-06-03" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -92,7 +93,16 @@ _EXCLUDE_HOSTS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'exc
if [[ -d /var/opt/ignite/clients ]] if [[ -d /var/opt/ignite/clients ]]
then then
_OLD_PWD="$(pwd)" _OLD_PWD="$(pwd)"
# shellcheck disable=SC2164
cd /var/opt/ignite/clients cd /var/opt/ignite/clients
if (( $? > 0 ))
then
_MSG="unable to run command: cd /var/opt/ignite/clients"
log_hc "$0" 1 "${_MSG}"
# dump debug info
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1
fi
# check backup states # check backup states
find * -prune -type l | while read _IGNITE_HOST find * -prune -type l | while read _IGNITE_HOST
@ -168,7 +178,16 @@ then
_STC=0 _STC=0
done done
# shellcheck disable=SC2164
cd "${_OLD_PWD}" cd "${_OLD_PWD}"
if (( $? > 0 ))
then
_MSG="unable to run command: cd /var/opt/ignite/clients"
log_hc "$0" 1 "${_MSG}"
# dump debug info
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 1
fi
else else
_MSG="Host is not an Ignite/UX server" _MSG="Host is not an Ignite/UX server"
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
@ -187,7 +206,7 @@ CONFIG : $3 with:
backup_age=<days_till_last_backup> backup_age=<days_till_last_backup>
PURPOSE : Checks the state and age of saved Ignite-UX client backups (should only be PURPOSE : Checks the state and age of saved Ignite-UX client backups (should only be
run only on the Ignite-UX server). Backups with warnings are considered run only on the Ignite-UX server). Backups with warnings are considered
to OK. Backups older than $backup_age will not pass the health check. to OK. Backups older than \$backup_age will not pass the health check.
EOT EOT

View File

@ -29,6 +29,7 @@
# @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken] # @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken]
# @(#) 2018-05-11: small optimizations [Patrick Van der Veken] # @(#) 2018-05-11: small optimizations [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -40,7 +41,7 @@ function check_hpux_ioscan
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _IOSCAN_BIN="/usr/sbin/ioscan" typeset _IOSCAN_BIN="/usr/sbin/ioscan"
typeset _IOSCAN_OPTS="-Fn" typeset _IOSCAN_OPTS="-Fn"
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-08-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -67,13 +68,13 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
@ -86,7 +87,7 @@ then
_IOSCAN_CLASSES="ctl|diag|disk|ext_bus|fc|fcp|i2o|ipmi|lan|lvm|olar|vm" _IOSCAN_CLASSES="ctl|diag|disk|ext_bus|fc|fcp|i2o|ipmi|lan|lvm|olar|vm"
else else
# convert commas and strip quotes # convert commas and strip quotes
_IOSCAN_CLASSES=$(data_comma2pipe $(data_dequote "${_CLASS_LINE}")) _IOSCAN_CLASSES=$(data_comma2pipe "$(data_dequote \"${_CLASS_LINE}\")")
fi fi
_KERNEL_MODE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'kernel_mode') _KERNEL_MODE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'kernel_mode')
if [[ -z "${_KERNEL_MODE}" ]] if [[ -z "${_KERNEL_MODE}" ]]
@ -126,32 +127,32 @@ else
fi fi
log "executing ioscan with options: ${_IOSCAN_OPTS}" log "executing ioscan with options: ${_IOSCAN_OPTS}"
${_IOSCAN_BIN} ${_IOSCAN_OPTS} >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG} ${_IOSCAN_BIN} ${_IOSCAN_OPTS} >>${HC_STDOUT_LOG} 2>>${HC_STDERR_LOG}
if (( $? != 0 )) if (( $? != 0 ))
then then
_MSG="unable to run command: {${_IOSCAN_BIN}}" _MSG="unable to run command: {${_IOSCAN_BIN}}"
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# dump debug info # dump debug info
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 0 return 1
fi fi
fi fi
# check for requested device classes # check for requested device classes
grep -E -e ".*:.*:.*:.*:.*:.*:.*:.*:${_IOSCAN_CLASSES}:.*" ${HC_STDOUT_LOG} 2>/dev/null |\ grep -E -e ".*:.*:.*:.*:.*:.*:.*:.*:${_IOSCAN_CLASSES}:.*" ${HC_STDOUT_LOG} 2>/dev/null |\
while read _IOSCAN_LINE while read _IOSCAN_LINE
do do
# possible states are: CLAIMED, UNCLAIMED, DIFF_HW, NO_HW, ERROR, SCAN # possible states are: CLAIMED, UNCLAIMED, DIFF_HW, NO_HW, ERROR, SCAN
_HW_CLASS="$(print ${_IOSCAN_LINE} | cut -f9 -d':')" _HW_CLASS="$(print ${_IOSCAN_LINE} | cut -f9 -d':')"
_HW_PATH="$(print ${_IOSCAN_LINE} | cut -f11 -d':')" _HW_PATH="$(print ${_IOSCAN_LINE} | cut -f11 -d':')"
_HW_STATE="$(print ${_IOSCAN_LINE} | cut -f16 -d':')" _HW_STATE="$(print ${_IOSCAN_LINE} | cut -f16 -d':')"
case "${_HW_STATE}" in case "${_HW_STATE}" in
NO_HW) NO_HW)
_MSG="detected NO_HW for device on path '${_HW_PATH}', class '${_HW_CLASS}'" _MSG="detected NO_HW for device on path '${_HW_PATH}', class '${_HW_CLASS}'"
_STC=1 _STC=1
_STC_COUNT=$(( _STC_COUNT + 1 )) _STC_COUNT=$(( _STC_COUNT + 1 ))
;; ;;
ERROR) ERROR)
_MSG="detected ERROR for device on HW path '${_HW_PATH}', class '${_HW_CLASS}'" _MSG="detected ERROR for device on HW path '${_HW_PATH}', class '${_HW_CLASS}'"
_STC=1 _STC=1
_STC_COUNT=$(( _STC_COUNT + 1 )) _STC_COUNT=$(( _STC_COUNT + 1 ))
@ -160,7 +161,7 @@ do
# everything else is considered non-fatal (do not report) # everything else is considered non-fatal (do not report)
continue continue
esac esac
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
_STC=0 _STC=0
done done

View File

@ -25,6 +25,7 @@
# @(#) 2017-12-22: original version [Patrick Van der Veken] # @(#) 2017-12-22: original version [Patrick Van der Veken]
# @(#) 2018-01-05: added validation on config values [Patrick Van der Veken] # @(#) 2018-01-05: added validation on config values [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_hpux_kernel_params
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _KCTUNE_BIN="/usr/sbin/kctune" typeset _KCTUNE_BIN="/usr/sbin/kctune"
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -51,7 +52,6 @@ typeset _CONFIG_VALUE=""
typeset _CURR_VALUE="" typeset _CURR_VALUE=""
typeset _EXPR_VALUE="" typeset _EXPR_VALUE=""
typeset _REPORTED_VALUE="" typeset _REPORTED_VALUE=""
typeset _DUMMY=""
typeset _FOUND_PARAM=0 typeset _FOUND_PARAM=0
typeset _LINE_COUNT=1 typeset _LINE_COUNT=1
@ -92,7 +92,7 @@ fi
# check configuration values # check configuration values
grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _PARAM_NAME _CONFIG_VALUE while IFS=':' read _ _PARAM_NAME _CONFIG_VALUE
do do
# check for empties # check for empties
if [[ -z "${_PARAM_NAME}" || -z "${_CONFIG_VALUE}" ]] if [[ -z "${_PARAM_NAME}" || -z "${_CONFIG_VALUE}" ]]
@ -112,7 +112,7 @@ done
# perform checks # perform checks
grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _PARAM_NAME _CONFIG_VALUE while IFS=':' read _ _PARAM_NAME _CONFIG_VALUE
do do
# check for actual values and expression values # check for actual values and expression values
_CURR_VALUE=$(grep -E -e "^${_PARAM_NAME}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null | awk '{ print $2 }') _CURR_VALUE=$(grep -E -e "^${_PARAM_NAME}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null | awk '{ print $2 }')

View File

@ -26,6 +26,7 @@
# @(#) 2018-01-08: extra config checks [Patrick Van der Veken] # @(#) 2018-01-08: extra config checks [Patrick Van der Veken]
# @(#) 2018-01-09: bug fix [Patrick Van der Veken] # @(#) 2018-01-09: bug fix [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -36,7 +37,7 @@ function check_hpux_kernel_usage
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _KCUSAGE_BIN="/usr/sbin/kcusage" typeset _KCUSAGE_BIN="/usr/sbin/kcusage"
typeset _VERSION="2018-05-20" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -58,7 +59,6 @@ typeset _CURR_VALUE=""
typeset _FOUND_PARAM=0 typeset _FOUND_PARAM=0
typeset _KCUSAGE_LINE="" typeset _KCUSAGE_LINE=""
typeset _LINE_COUNT=1 typeset _LINE_COUNT=1
typeset _DUMMY=""
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
for _ARG in ${_ARGS} for _ARG in ${_ARGS}
@ -82,7 +82,7 @@ _MAX_KCUSAGE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'max_k
if [[ -z "${_MAX_KCUSAGE}" ]] if [[ -z "${_MAX_KCUSAGE}" ]]
then then
# default # default
_IGNORE_FS=90 _MAX_KCUSAGE=90
fi fi
_EXCLUDED_PARAMS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'exclude_params') _EXCLUDED_PARAMS=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'exclude_params')
if [[ -n "${_EXCLUDED_PARAMS}" ]] if [[ -n "${_EXCLUDED_PARAMS}" ]]
@ -109,7 +109,7 @@ fi
# check configuration values # check configuration values
grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _PARAM_NAME _CONFIG_VALUE while IFS=':' read _ _PARAM_NAME _CONFIG_VALUE
do do
# check for empties # check for empties
if [[ -z "${_PARAM_NAME}" || -z "${_CONFIG_VALUE}" ]] if [[ -z "${_PARAM_NAME}" || -z "${_CONFIG_VALUE}" ]]
@ -134,10 +134,10 @@ do
return 1 return 1
fi fi
;; ;;
*) *)
# not numeric # not numeric
warn "invalid threshold value '${_CONFIG_VALUE}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid threshold value '${_CONFIG_VALUE}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
;; ;;
esac esac
_LINE_COUNT=$(( _LINE_COUNT + 1 )) _LINE_COUNT=$(( _LINE_COUNT + 1 ))
@ -145,7 +145,7 @@ done
# 1) perform checks (first the invidually configured ones) # 1) perform checks (first the invidually configured ones)
grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^param:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _PARAM_NAME _CONFIG_VALUE while IFS=':' read _ _PARAM_NAME _CONFIG_VALUE
do do
# check for actual values and ceilings # check for actual values and ceilings
_CURR_VALUE=$(grep -E -e "^${_PARAM_NAME}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null | awk '{ print $2 }') _CURR_VALUE=$(grep -E -e "^${_PARAM_NAME}[ \t].*" ${HC_STDOUT_LOG} 2>/dev/null | awk '{ print $2 }')
@ -196,7 +196,7 @@ do
else else
_MSG="${_PARAM_NAME} is below the general threshold (${_CHECK_VALUE}% <= ${_MAX_KCUSAGE}%)" _MSG="${_PARAM_NAME} is below the general threshold (${_CHECK_VALUE}% <= ${_MAX_KCUSAGE}%)"
fi fi
# handle unit result # handle unit result
log_hc "$0" ${_STC} "${_MSG}" "${_CHECK_VALUE}" "${_MAX_KCUSAGE}" log_hc "$0" ${_STC} "${_MSG}" "${_CHECK_VALUE}" "${_MAX_KCUSAGE}"
_STC=0 _STC=0

View File

@ -51,13 +51,12 @@ typeset _STC=0
typeset _LOG_HEALTHY=0 typeset _LOG_HEALTHY=0
typeset _TMP1_FILE="${TMP_DIR}/.$0.ioscan_tmp.$$" typeset _TMP1_FILE="${TMP_DIR}/.$0.ioscan_tmp.$$"
typeset _TMP2_FILE="${TMP_DIR}/.$0.scsimgr_tmp.$$" typeset _TMP2_FILE="${TMP_DIR}/.$0.scsimgr_tmp.$$"
typeset _IOSCAN_LINE=""
typeset _SCSIMGR_LINE=""
typeset _HW_PATH="" typeset _HW_PATH=""
typeset _ACTIVE_PATH_COUNT="" typeset _ACTIVE_PATH_COUNT=""
typeset _ALL_PATH_COUNT="" typeset _ALL_PATH_COUNT=""
typeset _FAILED_PATH_COUNT="" typeset _FAILED_PATH_COUNT=""
typeset _STANDBY_PATH_COUNT="" typeset _STANDBY_PATH_COUNT=""
typeset _WWID=""
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
for _ARG in ${_ARGS} for _ARG in ${_ARGS}
@ -84,9 +83,11 @@ else
fi fi
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
return 0" 0 return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
return 1" 1 2 3 15 return 1" 1 2 3 15
@ -104,11 +105,13 @@ then
fi fi
# check TMP_FILEs # check TMP_FILEs
# shellcheck disable=SC2188
>${_TMP1_FILE} >${_TMP1_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP1_FILE}" warn "failed to create temporary file at ${_TMP1_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP2_FILE} >${_TMP2_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP2_FILE}" warn "failed to create temporary file at ${_TMP2_FILE}"

View File

@ -53,7 +53,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -65,7 +65,7 @@ then
if [[ -n "${_NAMED_PID}" ]] if [[ -n "${_NAMED_PID}" ]]
then then
# get PID list without heading # get PID list without heading
(( $(UNIX95= ps -o pid= -p ${_NAMED_PID}| wc -l) == 0 )) && _STC=1 (( $(UNIX95='' ps -o pid= -p ${_NAMED_PID}| wc -l) == 0 )) && _STC=1
else else
# not running # not running
_RC=1 _RC=1

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2016-12-01: initial version [Patrick Van der Veken] # @(#) 2016-12-01: initial version [Patrick Van der Veken]
# @(#) 2016-12-29: added threshold & config file [Patrick Van der Veken] # @(#) 2016-12-29: added threshold & config file [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -33,7 +34,7 @@ function check_hpux_ntp_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2016-12-29" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _NTPQ_BIN="/usr/sbin/ntpq" typeset _NTPQ_BIN="/usr/sbin/ntpq"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -55,13 +56,13 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle config file # handle config file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
@ -75,7 +76,7 @@ then
fi fi
# check & get NTP status # check & get NTP status
if [[ ! -x ${_NTPQ_BIN} ]] if [[ ! -x ${_NTPQ_BIN} ]]
then then
warn "${_NTPQ_BIN} is not installed here" warn "${_NTPQ_BIN} is not installed here"
return 1 return 1
@ -116,16 +117,16 @@ then
if (( $(awk -v c="${_CURR_OFFSET}" -v m="${_MAX_OFFSET}" 'BEGIN { print (c>m) }') != 0 )) if (( $(awk -v c="${_CURR_OFFSET}" -v m="${_MAX_OFFSET}" 'BEGIN { print (c>m) }') != 0 ))
then then
_MSG="NTP offset of ${_CURR_OFFSET} is bigger than the configured maximum of ${_MAX_OFFSET}" _MSG="NTP offset of ${_CURR_OFFSET} is bigger than the configured maximum of ${_MAX_OFFSET}"
_STC=1 _STC=1
else else
_MSG="NTP offset of ${_CURR_OFFSET} is within the acceptable range" _MSG="NTP offset of ${_CURR_OFFSET} is within the acceptable range"
fi fi
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
;; ;;
*) *)
# not numeric # not numeric
warn "invalid offset value of ${_CURR_OFFSET} found for ${NTP_PEER}?" warn "invalid offset value of ${_CURR_OFFSET} found for ${_NTP_PEER}?"
return 1 return 1
;; ;;
esac esac
fi fi

View File

@ -27,6 +27,7 @@
# @(#) 2018-07-10: added log_healthy hc_arg [Patrick Van der Veken] # @(#) 2018-07-10: added log_healthy hc_arg [Patrick Van der Veken]
# @(#) 2018-08-30: added config file + check list for daemons [Patrick Van der Veken] # @(#) 2018-08-30: added config file + check list for daemons [Patrick Van der Veken]
# @(#) 2018-10-22: small fixes [Patrick Van der Veken] # @(#) 2018-10-22: small fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -36,7 +37,7 @@ function check_hpux_ovpa_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-10-22" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _OVPA_BIN="/opt/perf/bin/perfstat" typeset _OVPA_BIN="/opt/perf/bin/perfstat"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -90,7 +91,7 @@ then
esac esac
else else
# convert commas and strip quotes # convert commas and strip quotes
_OVPA_DAEMONS=$(data_comma2space $(data_dequote "${_OVPA_DAEMONS}")) _OVPA_DAEMONS=$(data_comma2space "$(data_dequote \"${_OVPA_DAEMONS}\")")
fi fi
log "will check daemons: ${_OVPA_DAEMONS}" log "will check daemons: ${_OVPA_DAEMONS}"
_CFG_HEALTHY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'log_healthy') _CFG_HEALTHY=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'log_healthy')

View File

@ -26,6 +26,7 @@
# @(#) 2018-05-11: initial version [Patrick Van der Veken] # @(#) 2018-05-11: initial version [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-22: added check on fileset state [Patrick Van der Veken] # @(#) 2018-10-22: added check on fileset state [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -39,7 +40,7 @@ typeset _SWLIST_BIN="/usr/sbin/swlist"
typeset _SWLIST_OPTS="" typeset _SWLIST_OPTS=""
typeset _SHOW_PATCHES_BIN="/usr/contrib/bin/show_patches" typeset _SHOW_PATCHES_BIN="/usr/contrib/bin/show_patches"
typeset _SHOW_PATCHES_OPTS="" typeset _SHOW_PATCHES_OPTS=""
typeset _VERSION="2018-10-22" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -49,7 +50,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _CFG_HEALTHY="" typeset _CFG_HEALTHY=""
typeset _LOG_HEALTHY=0 typeset _LOG_HEALTHY=0
typeset _OE_VERSION="" typeset _OE_VERSION=""
@ -83,7 +83,7 @@ _PATCH_LINE=$(_CONFIG_FILE="${_CONFIG_FILE}" data_get_lvalue_from_config 'requir
if [[ -n "${_PATCH_LINE}" ]] if [[ -n "${_PATCH_LINE}" ]]
then then
# convert commas and strip quotes # convert commas and strip quotes
_PATCHES=$(data_comma2space $(data_dequote "${_PATCH_LINE}")) _PATCHES=$(data_comma2space "$(data_dequote \"${_PATCH_LINE}\")")
fi fi
if [[ -z "${_CHECK_FILESETS}" ]] if [[ -z "${_CHECK_FILESETS}" ]]
then then

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2016-03-08: initial version [Patrick Van der Veken] # @(#) 2016-03-08: initial version [Patrick Van der Veken]
# @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken] # @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_hpux_sg_cluster_config
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2016-12-01" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _SG_DAEMON="/usr/lbin/cmcld" typeset _SG_DAEMON="/usr/lbin/cmcld"
# rubbish that cmgetconf outputs to STDOUT instead of STDERR # rubbish that cmgetconf outputs to STDOUT instead of STDERR
@ -58,7 +59,9 @@ typeset _CLUSTER_PARAM=""
typeset _CLUSTER_VALUE="" typeset _CLUSTER_VALUE=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 0" 0 trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15 trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -165,9 +168,6 @@ do
done <${_CLUSTER_CFG_FILE}.${_CLUSTER_INSTANCE} done <${_CLUSTER_CFG_FILE}.${_CLUSTER_INSTANCE}
done done
# remove working files
rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1
return 0 return 0
} }

View File

@ -26,6 +26,7 @@
# @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken] # @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken]
# @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken] # @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_hpux_sg_cluster_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2017-05-07" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _SG_DAEMON="/usr/lbin/cmcld" typeset _SG_DAEMON="/usr/lbin/cmcld"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -50,7 +51,6 @@ typeset _STC=0
typeset _SG_ENTRY="" typeset _SG_ENTRY=""
typeset _SG_MATCH="" typeset _SG_MATCH=""
typeset _SG_CFG_PARAM="" typeset _SG_CFG_PARAM=""
typeset _SG_RUN_PARAM=""
typeset _SG_CFG_VALUE="" typeset _SG_CFG_VALUE=""
typeset _SG_RUN_VALUE="" typeset _SG_RUN_VALUE=""

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2016-03-08: initial version [Patrick Van der Veken] # @(#) 2016-03-08: initial version [Patrick Van der Veken]
# @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken] # @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_hpux_sg_package_config
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2016-12-01" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _SG_DAEMON="/usr/lbin/cmcld" typeset _SG_DAEMON="/usr/lbin/cmcld"
# rubbish that cmgetconf outputs to STDOUT instead of STDERR # rubbish that cmgetconf outputs to STDOUT instead of STDERR
@ -68,7 +69,9 @@ do
done done
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 0" 0 trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15 trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15
# handle configuration file # handle configuration file
@ -165,9 +168,6 @@ do
done <${_PKG_CFG_FILE}.${_PKG_INSTANCE} done <${_PKG_CFG_FILE}.${_PKG_INSTANCE}
done done
# remove working files
rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1
return 0 return 0
} }

View File

@ -26,6 +26,7 @@
# @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken] # @(#) 2016-12-01: more standardized error handling [Patrick Van der Veken]
# @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken] # @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_hpux_sg_package_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2017-07-05" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _SG_DAEMON="/usr/lbin/cmcld" typeset _SG_DAEMON="/usr/lbin/cmcld"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -51,7 +52,6 @@ typeset _SG_ENTRY=""
typeset _SG_MATCH="" typeset _SG_MATCH=""
typeset _SG_PACKAGE="" typeset _SG_PACKAGE=""
typeset _SG_CFG_PARAM="" typeset _SG_CFG_PARAM=""
typeset _SG_RUN_PARAM=""
typeset _SG_CFG_VALUE="" typeset _SG_CFG_VALUE=""
typeset _SG_RUN_VALUE="" typeset _SG_RUN_VALUE=""

View File

@ -23,6 +23,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-05-01: initial version [Patrick Van der Veken] # @(#) 2017-05-01: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -31,7 +32,7 @@
function check_hpux_sg_qs_status function check_hpux_sg_qs_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2017-05-01" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
typeset _QS_BIN="/usr/lbin/qsc" typeset _QS_BIN="/usr/lbin/qsc"
typeset _QS_AUTH_FILE="/etc/cmcluster/qs_authfile" typeset _QS_AUTH_FILE="/etc/cmcluster/qs_authfile"
@ -44,7 +45,6 @@ typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _RC=0
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
for _ARG in ${_ARGS} for _ARG in ${_ARGS}
@ -52,12 +52,12 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# check QS presence # check QS presence
if [[ ! -x ${_QS_BIN} ]] if [[ ! -x ${_QS_BIN} ]]
then then
warn "${_QS_BIN} is not installed here" warn "${_QS_BIN} is not installed here"
return 1 return 1

View File

@ -23,6 +23,7 @@
# #
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-04-01: initial version [Patrick Van der Veken] # @(#) 2017-04-01: initial version [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -32,7 +33,7 @@ function check_hpux_sshd_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _SSHD_PID_FILE="/var/run/sshd/sshd.pid" typeset _SSHD_PID_FILE="/var/run/sshd/sshd.pid"
typeset _VERSION="2017-04-01" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -52,7 +53,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -64,7 +65,7 @@ then
if [[ -n "${_SSHD_PID}" ]] if [[ -n "${_SSHD_PID}" ]]
then then
# get PID list without heading # get PID list without heading
(( $(UNIX95= ps -o pid= -p ${_SSHD_PID}| wc -l) == 0 )) && _STC=1 (( $(UNIX95='' ps -o pid= -p ${_SSHD_PID}| wc -l) == 0 )) && _STC=1
else else
# not running # not running
_RC=1 _RC=1

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2016-06-20: initial version [Patrick Van der Veken] # @(#) 2016-06-20: initial version [Patrick Van der Veken]
# @(#) 2017-05-18: do not update the state file with --no-log [Patrick Van der Veken] # @(#) 2017-05-18: do not update the state file with --no-log [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -34,7 +35,7 @@ function check_hpux_syslog
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _STATE_FILE="${STATE_PERM_DIR}/discovered.syslog" typeset _STATE_FILE="${STATE_PERM_DIR}/discovered.syslog"
typeset _VERSION="2017-05-18" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match typeset _SUPPORTED_PLATFORMS="HP-UX" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -62,7 +63,9 @@ do
done done
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# handle configuration file # handle configuration file
@ -144,9 +147,6 @@ fi
# handle results # handle results
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
# clean up temporary files
[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -27,6 +27,7 @@
# @(#) 2016-12-01: initial version [Patrick Van der Veken] # @(#) 2016-12-01: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-08-25: support for burp v2 [Patrick Van der Veken] # @(#) 2018-08-25: support for burp v2 [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -38,7 +39,7 @@ function check_linux_burp_backup
typeset _BURP_SERVER_CONFIG_FILE="/etc/burp/burp-server.conf" typeset _BURP_SERVER_CONFIG_FILE="/etc/burp/burp-server.conf"
typeset _BURP_CLIENT_CONFIG_FILE="/etc/burp/burp.conf" typeset _BURP_CLIENT_CONFIG_FILE="/etc/burp/burp.conf"
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-08-25" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -156,7 +157,7 @@ do
typeset _MIN_BACKUP_TIME="" typeset _MIN_BACKUP_TIME=""
typeset _STC=0 typeset _STC=0
if [[ -n "{_BURP_CLIENT}" ]] && [[ -n "{_BURP_WARNINGS}" ]] && [[ -n "${_BURP_AGE}" ]] if [[ -n "${_BURP_CLIENT}" ]] && [[ -n "${_BURP_WARNINGS}" ]] && [[ -n "${_BURP_AGE}" ]]
then then
# convert backup aging (UNIX seconds) # convert backup aging (UNIX seconds)
case "${_BURP_AGE}" in case "${_BURP_AGE}" in

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2013-05-27: initial version [Patrick Van der Veken] # @(#) 2013-05-27: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_file_age
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -45,7 +46,7 @@ typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _ENTRY="" typeset _ENTRY=""
typeset _AGE_CHECK=="" typeset _AGE_CHECK=""
typeset _FILE_PATH="" typeset _FILE_PATH=""
typeset _FILE_AGE="" typeset _FILE_AGE=""
typeset _FILE_NAME="" typeset _FILE_NAME=""
@ -57,57 +58,57 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
# perform check # perform check
grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _ENTRY grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _ENTRY
do do
# field split # field split
_FILE_PATH=$(print "${_ENTRY%%;*}") _FILE_PATH=$(print "${_ENTRY%%;*}")
_FILE_AGE=$(print "${_ENTRY##*;}") _FILE_AGE=$(print "${_ENTRY##*;}")
# split file/dir # split file/dir
_FILE_NAME=$(print "${_FILE_PATH##*/}") _FILE_NAME=$(print "${_FILE_PATH##*/}")
_FILE_DIR=$(print "${_FILE_PATH%/*}") _FILE_DIR=$(print "${_FILE_PATH%/*}")
# check config # check config
if [ \( -z "${_FILE_PATH}" \) -a \( -z "${_FILE_AGE}" \) ] if [[ -z "${_FILE_PATH}" ]] && [[ -z "${_FILE_AGE}" ]]
then then
warn "missing values in configuration file at ${_CONFIG_FILE}" warn "missing values in configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
case "${_FILE_AGE}" in case "${_FILE_AGE}" in
+([0-9])*(.)*([0-9])) +([0-9])*(.)*([0-9]))
# numeric, OK # numeric, OK
;; ;;
*) *)
# not numeric # not numeric
warn "invalid file age value '${_FILE_AGE}' in configuration file at ${_CONFIG_FILE}" warn "invalid file age value '${_FILE_AGE}' in configuration file at ${_CONFIG_FILE}"
return 1 return 1
;; ;;
esac esac
# perform check # perform check
if [[ ! -r "${_FILE_PATH}" ]] if [[ ! -r "${_FILE_PATH}" ]]
then then
_MSG="unable to read or access requested file at ${_FILE_PATH}" _MSG="unable to read or access requested file at ${_FILE_PATH}"
_STC=1 _STC=1
else else
_AGE_CHECK=$(find "${_FILE_DIR}" -type f -name "${_FILE_NAME}" -mmin -"${_FILE_AGE}" 2>/dev/null) _AGE_CHECK=$(find "${_FILE_DIR}" -type f -name "${_FILE_NAME}" -mmin -"${_FILE_AGE}" 2>/dev/null)
if (( $? != 0 )) if (( $? != 0 ))
then then
warn "unable to execute file age test for ${_FILE_PATH}" warn "unable to execute file age test for ${_FILE_PATH}"
return 1 return 1
fi fi
if [[ -z "${_AGE_CHECK}" ]] if [[ -z "${_AGE_CHECK}" ]]
then then
@ -117,7 +118,7 @@ do
_MSG="file age of ${_FILE_AGE} has not expired on ${_FILE_PATH}" _MSG="file age of ${_FILE_AGE} has not expired on ${_FILE_PATH}"
fi fi
fi fi
# handle unit result # handle unit result
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
_STC=0 _STC=0
@ -136,7 +137,7 @@ CONFIG : $3 with:
<file_name>;<maximum_age_in_minutes> <file_name>;<maximum_age_in_minutes>
PURPOSE : Checks whether given files have been changed in the last n minutes PURPOSE : Checks whether given files have been changed in the last n minutes
(requires GNU find) (requires GNU find)
EOT EOT
return 0 return 0

View File

@ -25,6 +25,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-05-18: initial version [Patrick Van der Veken] # @(#) 2017-05-18: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -34,7 +35,7 @@ function check_linux_file_change
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -45,7 +46,6 @@ typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _STC_COUNT=0
typeset _DO_META_CHECK=0 typeset _DO_META_CHECK=0
typeset _CFG_STATE_FILE="" typeset _CFG_STATE_FILE=""
typeset _STATE_FILE="" typeset _STATE_FILE=""
@ -66,11 +66,13 @@ typeset _TMP_EXCL_FILE="${TMP_DIR}/.$0.tmp_excl.$$"
set -o noglob # no file globbing set -o noglob # no file globbing
# set local trap for clean-up # set local trap for clean-up
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1;
return 0" 0 return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1; trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1;
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1; [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1;
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1; [[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1;
@ -134,6 +136,7 @@ fi
# check state file & TMP_FILEs # check state file & TMP_FILEs
[[ -r ${_STATE_FILE} ]] || { [[ -r ${_STATE_FILE} ]] || {
# shellcheck disable=SC2188
>${_STATE_FILE} >${_STATE_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create new state file at ${_STATE_FILE}" warn "failed to create new state file at ${_STATE_FILE}"
@ -141,21 +144,25 @@ fi
} }
log "created new state file at ${_STATE_FILE}" log "created new state file at ${_STATE_FILE}"
} }
# shellcheck disable=SC2188
>${_TMP_INCL_FILE} >${_TMP_INCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_INCL_FILE}" warn "failed to create temporary file at ${_TMP_INCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP_EXCL_FILE} >${_TMP_EXCL_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP_EXCL_FILE}" warn "failed to create temporary file at ${_TMP_EXCL_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP1_FILE} >${_TMP1_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP1_FILE}" warn "failed to create temporary file at ${_TMP1_FILE}"
return 1 return 1
} }
# shellcheck disable=SC2188
>${_TMP2_FILE} >${_TMP2_FILE}
(( $? > 0 )) && { (( $? > 0 )) && {
warn "failed to create temporary file at ${_TMP2_FILE}" warn "failed to create temporary file at ${_TMP2_FILE}"
@ -164,7 +171,7 @@ fi
# build list of configured objects: inclusion # build list of configured objects: inclusion
grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^incl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _INCL_OBJECT while IFS=':' read _ _INCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -188,7 +195,7 @@ done
# build list of configured objects: exclusion # build list of configured objects: exclusion
grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^excl:' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=':' read _DUMMY _EXCL_OBJECT while IFS=':' read _ _EXCL_OBJECT
do do
# check for meta & globbing characters (*?[]{}|) # check for meta & globbing characters (*?[]{}|)
if (( _DO_META_CHECK == 1 )) if (( _DO_META_CHECK == 1 ))
@ -338,12 +345,6 @@ then
} }
fi fi
# clean up temporary files
[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
[[ -f ${_TMP_INCL_FILE} ]] && rm -f ${_TMP_INCL_FILE} >/dev/null 2>&1
[[ -f ${_TMP_EXCL_FILE} ]] && rm -f ${_TMP_EXCL_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2013-09-09: initial version [Patrick Van der Veken] # @(#) 2013-09-09: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_hpacucli
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -43,7 +44,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _STC_COUNT=0 typeset _STC_COUNT=0
typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$" typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$"
typeset _HPACUCLI_BIN="" typeset _HPACUCLI_BIN=""
@ -57,7 +57,9 @@ typeset _DO_ACU_LOGL=1
typeset _DO_CHECK=0 typeset _DO_CHECK=0
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -262,9 +264,6 @@ then
log_hc "$0" 0 "${_MSG}" log_hc "$0" 0 "${_MSG}"
fi fi
# remove temporary file
[[ -f ${_TMP_FILE} ]] & rm -f ${_TMP_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -25,6 +25,7 @@
# @(#) 2013-09-07: initial version [Patrick Van der Veken] # @(#) 2013-09-07: initial version [Patrick Van der Veken]
# @(#) 2017-04-06: bugfix in temperature checking [Patrick Van der Veken] # @(#) 2017-04-06: bugfix in temperature checking [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -34,7 +35,7 @@ function check_linux_hpasmcli
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -44,7 +45,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _STC_COUNT=0 typeset _STC_COUNT=0
typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$" typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$"
typeset _HPASMCLI_BIN="" typeset _HPASMCLI_BIN=""
@ -62,7 +62,9 @@ typeset _THRES_VALUE=""
typeset _TEMP_UNIT="" typeset _TEMP_UNIT=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -273,9 +275,6 @@ then
log_hc "$0" 0 "${_MSG}" log_hc "$0" 0 "${_MSG}"
fi fi
# remove temporary file
[[ -f ${_TMP_FILE} ]] & rm -f ${_TMP_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-04-22: initial version [Patrick Van der Veken] # @(#) 2017-04-22: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: added dump_logs() & STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: added dump_logs() & STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -34,7 +35,7 @@ function check_linux_hplog
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _STATE_FILE="${STATE_PERM_DIR}/discovered.hplog" typeset _STATE_FILE="${STATE_PERM_DIR}/discovered.hplog"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -55,9 +56,11 @@ typeset _SEVERITY_ENTRY=""
typeset _EVENT_ENTRY="" typeset _EVENT_ENTRY=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1 trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1 [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
return 0" 0 return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1 trap "[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1 [[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
return 1" 1 2 3 15 return 1" 1 2 3 15
@ -159,10 +162,6 @@ else
fi fi
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
# clean up temporary files
[[ -f ${_TMP1_FILE} ]] && rm -f ${_TMP1_FILE} >/dev/null 2>&1
[[ -f ${_TMP2_FILE} ]] && rm -f ${_TMP2_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2016-04-01: initial version [Patrick Van der Veken] # @(#) 2016-04-01: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_hpssacli
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -43,7 +44,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _STC_COUNT=0 typeset _STC_COUNT=0
typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$" typeset _TMP_FILE="${TMP_DIR}/.$0.tmp.$$"
typeset _HPSSACLI_BIN="" typeset _HPSSACLI_BIN=""
@ -57,7 +57,9 @@ typeset _DO_SSA_LOGL=1
typeset _DO_CHECK=0 typeset _DO_CHECK=0
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15 trap "[[ -f ${_TMP_FILE} ]] && rm -f ${_TMP_FILE} >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -262,9 +264,6 @@ then
log_hc "$0" 0 "${_MSG}" log_hc "$0" 0 "${_MSG}"
fi fi
# remove temporary file
[[ -f ${_TMP_FILE} ]] & rm -f ${_TMP_FILE} >/dev/null 2>&1
return 0 return 0
} }

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2018-03-20: initial version [Patrick Van der Veken] # @(#) 2018-03-20: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR + other small fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR + other small fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@ -35,7 +36,7 @@ function check_linux_ntp_status
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _NTPD_INIT_SCRIPT="/etc/init.d/ntpd" typeset _NTPD_INIT_SCRIPT="/etc/init.d/ntpd"
typeset _NTPD_SYSTEMD_SERVICE="ntpd.service" typeset _NTPD_SYSTEMD_SERVICE="ntpd.service"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _NTPQ_BIN="/usr/sbin/ntpq" typeset _NTPQ_BIN="/usr/sbin/ntpq"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -57,13 +58,13 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle config file # handle config file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
@ -78,6 +79,7 @@ fi
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# check ntp service # check ntp service
# 1) try using the init ways
linux_get_init linux_get_init
case "${LINUX_INIT}" in case "${LINUX_INIT}" in
'systemd') 'systemd')
@ -105,6 +107,12 @@ case "${LINUX_INIT}" in
;; ;;
esac esac
# 2) try the pgrep way (note: old pgreps do not support '-c')
if (( _RC != 0 ))
then
(( $(pgrep -u root ntpd 2>>${HC_STDERR_LOG} | wc -l 2>/dev/null) == 0 )) && _STC=1
fi
# evaluate results # evaluate results
case ${_STC} in case ${_STC} in
0) 0)
@ -122,7 +130,7 @@ log_hc "$0" ${_STC} "${_MSG}"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# check ntpq results # check ntpq results
_STC=0 _STC=0
if [[ ! -x ${_NTPQ_BIN} ]] if [[ ! -x ${_NTPQ_BIN} ]]
then then
warn "${_NTPQ_BIN} is not installed here" warn "${_NTPQ_BIN} is not installed here"
return 1 return 1
@ -159,16 +167,16 @@ then
if (( $(awk -v c="${_CURR_OFFSET}" -v m="${_MAX_OFFSET}" 'BEGIN { print (c>m) }' 2>/dev/null) != 0 )) if (( $(awk -v c="${_CURR_OFFSET}" -v m="${_MAX_OFFSET}" 'BEGIN { print (c>m) }' 2>/dev/null) != 0 ))
then then
_MSG="NTP offset of ${_CURR_OFFSET} is bigger than the configured maximum of ${_MAX_OFFSET}" _MSG="NTP offset of ${_CURR_OFFSET} is bigger than the configured maximum of ${_MAX_OFFSET}"
_STC=1 _STC=1
else else
_MSG="NTP offset of ${_CURR_OFFSET} is within the acceptable range" _MSG="NTP offset of ${_CURR_OFFSET} is within the acceptable range"
fi fi
log_hc "$0" ${_STC} "${_MSG}" log_hc "$0" ${_STC} "${_MSG}"
;; ;;
*) *)
# not numeric # not numeric
warn "invalid offset value of ${_CURR_OFFSET} found for ${NTP_PEER}?" warn "invalid offset value of ${_CURR_OFFSET} found for ${_NTP_PEER}?"
return 1 return 1
;; ;;
esac esac
fi fi

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2018-07-10: original version [Patrick Van der Veken] # @(#) 2018-07-10: original version [Patrick Van der Veken]
# @(#) 2018-07-12: better log_healthy handling [Patrick Van der Veken] # @(#) 2018-07-12: better log_healthy handling [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_process_limits
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-07-12" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -43,8 +44,6 @@ init_hc "$0" "${_SUPPORTED_PLATFORMS}" "${_VERSION}"
typeset _ARGS=$(data_space2comma "$*") typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0
typeset _DUMMY=""
typeset _LINE_COUNT=1 typeset _LINE_COUNT=1
typeset _CFG_HEALTHY="" typeset _CFG_HEALTHY=""
typeset _LOG_HEALTHY=0 typeset _LOG_HEALTHY=0
@ -66,7 +65,9 @@ typeset _USER_PS_PID=""
typeset _USER_PS_COMM="" typeset _USER_PS_COMM=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "rm -f ${_INSTANCE_RUN_FILE}.* >/dev/null 2>&1; return 0" 0 trap "rm -f ${_INSTANCE_RUN_FILE}.* >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "rm -f ${_INSTANCE_RUN_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15 trap "rm -f ${_INSTANCE_RUN_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -114,7 +115,7 @@ fi
# check PROCESS stanzas # check PROCESS stanzas
grep -i '^process' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^process' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=';' read _DUMMY _PROCESS _PROCESS_LIMIT _PROCESS_SOFT_THRESHOLD _PROCESS_HARD_THRESHOLD while IFS=';' read _ _PROCESS _PROCESS_LIMIT _PROCESS_SOFT_THRESHOLD _PROCESS_HARD_THRESHOLD
do do
# check for empties # check for empties
if [[ -z "${_PROCESS}" || -z "${_PROCESS_LIMIT}" ]] if [[ -z "${_PROCESS}" || -z "${_PROCESS_LIMIT}" ]]
@ -124,7 +125,7 @@ do
fi fi
if [[ -n "${_PROCESS_SOFT_THRESHOLD}" ]] if [[ -n "${_PROCESS_SOFT_THRESHOLD}" ]]
then then
$(data_is_numeric ${_PROCESS_SOFT_THRESHOLD}) data_is_numeric ${_PROCESS_SOFT_THRESHOLD}
if (( $? > 0 )) if (( $? > 0 ))
then then
warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
@ -133,7 +134,7 @@ do
fi fi
if [[ -n "${_PROCESS_HARD_THRESHOLD}" ]] if [[ -n "${_PROCESS_HARD_THRESHOLD}" ]]
then then
$(data_is_numeric ${_PROCESS_HARD_THRESHOLD}) data_is_numeric ${_PROCESS_HARD_THRESHOLD}
if (( $? > 0 )) if (( $? > 0 ))
then then
warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
@ -178,7 +179,7 @@ done
# check USER stanzas # check USER stanzas
_LINE_COUNT=0 _LINE_COUNT=0
grep -i '^user' ${_CONFIG_FILE} 2>/dev/null |\ grep -i '^user' ${_CONFIG_FILE} 2>/dev/null |\
while IFS=';' read _DUMMY _USER _USER_LIMIT _USER_SOFT_THRESHOLD _USER_HARD_THRESHOLD while IFS=';' read _ _USER _USER_LIMIT _USER_SOFT_THRESHOLD _USER_HARD_THRESHOLD
do do
# check for empties # check for empties
if [[ -z "${_USER}" || -z "${_USER_LIMIT}" ]] if [[ -z "${_USER}" || -z "${_USER_LIMIT}" ]]
@ -188,7 +189,7 @@ do
fi fi
if [[ -n "${_USER_SOFT_THRESHOLD}" ]] if [[ -n "${_USER_SOFT_THRESHOLD}" ]]
then then
$(data_is_numeric ${_USER_SOFT_THRESHOLD}) data_is_numeric ${_USER_SOFT_THRESHOLD}
if (( $? > 0 )) if (( $? > 0 ))
then then
warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
@ -197,7 +198,7 @@ do
fi fi
if [[ -n "${_USER_HARD_THRESHOLD}" ]] if [[ -n "${_USER_HARD_THRESHOLD}" ]]
then then
$(data_is_numeric ${_USER_HARD_THRESHOLD}) data_is_numeric ${_USER_HARD_THRESHOLD}
if (( $? > 0 )) if (( $? > 0 ))
then then
warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "parameter is not numeric in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-04-01: initial version [Patrick Van der Veken] # @(#) 2017-04-01: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: added dump_logs() & other fixes [Patrick Van der Veken] # @(#) 2018-05-21: added dump_logs() & other fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_sg_cluster_config
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld" typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld"
# rubbish that cmgetconf outputs to STDOUT instead of STDERR # rubbish that cmgetconf outputs to STDOUT instead of STDERR
@ -59,7 +60,9 @@ typeset _CLUSTER_PARAM=""
typeset _CLUSTER_VALUE="" typeset _CLUSTER_VALUE=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 0" 0 trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15 trap "rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -168,9 +171,6 @@ do
done <${_CLUSTER_CFG_FILE}.${_CLUSTER_INSTANCE} done <${_CLUSTER_CFG_FILE}.${_CLUSTER_INSTANCE}
done done
# remove working files
rm -f ${_CLUSTER_RUN_FILE}.* ${_CLUSTER_CFG_FILE}.* >/dev/null 2>&1
return 0 return 0
} }

View File

@ -26,6 +26,7 @@
# @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken] # @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_linux_sg_cluster_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld" typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -51,7 +52,6 @@ typeset _STC=0
typeset _SG_ENTRY="" typeset _SG_ENTRY=""
typeset _SG_MATCH="" typeset _SG_MATCH=""
typeset _SG_CFG_PARAM="" typeset _SG_CFG_PARAM=""
typeset _SG_RUN_PARAM=""
typeset _SG_CFG_VALUE="" typeset _SG_CFG_VALUE=""
typeset _SG_RUN_VALUE="" typeset _SG_RUN_VALUE=""
@ -61,20 +61,20 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
# check & get serviceguard status # check & get serviceguard status
if [[ ! -x ${_SG_DAEMON} ]] if [[ ! -x ${_SG_DAEMON} ]]
then then
warn "${_SG_DAEMON} is not installed here" warn "${_SG_DAEMON} is not installed here"
return 1 return 1
@ -103,14 +103,14 @@ do
if [[ -n "${_SG_MATCH}" ]] if [[ -n "${_SG_MATCH}" ]]
then then
_SG_RUN_VALUE=$(print "${_SG_MATCH}" | cut -f2 -d'=' 2>/dev/null) # field 2 _SG_RUN_VALUE=$(print "${_SG_MATCH}" | cut -f2 -d'=' 2>/dev/null) # field 2
if [[ "${_SG_CFG_VALUE}" = "${_SG_RUN_VALUE}" ]] if [[ "${_SG_CFG_VALUE}" = "${_SG_RUN_VALUE}" ]]
then then
_MSG="cluster parameter ${_SG_CFG_PARAM} has a correct value [${_SG_RUN_VALUE}]" _MSG="cluster parameter ${_SG_CFG_PARAM} has a correct value [${_SG_RUN_VALUE}]"
_STC=0 _STC=0
else else
_MSG="cluster parameter ${_SG_CFG_PARAM} has a wrong value [${_SG_RUN_VALUE}]" _MSG="cluster parameter ${_SG_CFG_PARAM} has a wrong value [${_SG_RUN_VALUE}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_SG_RUN_VALUE}" "${_SG_CFG_VALUE}" log_hc "$0" ${_STC} "${_MSG}" "${_SG_RUN_VALUE}" "${_SG_CFG_VALUE}"
else else

View File

@ -24,6 +24,7 @@
# @(#) HISTORY: # @(#) HISTORY:
# @(#) 2017-04-01: initial version [Patrick Van der Veken] # @(#) 2017-04-01: initial version [Patrick Van der Veken]
# @(#) 2018-05-21: added dump_logs() & other fixes [Patrick Van der Veken] # @(#) 2018-05-21: added dump_logs() & other fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -33,7 +34,7 @@ function check_linux_sg_package_config
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld" typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld"
# rubbish that cmgetconf outputs to STDOUT instead of STDERR # rubbish that cmgetconf outputs to STDOUT instead of STDERR
@ -59,7 +60,9 @@ typeset _PKG_PARAM=""
typeset _PKG_VALUE="" typeset _PKG_VALUE=""
# set local trap for cleanup # set local trap for cleanup
# shellcheck disable=SC2064
trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 0" 0 trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 0" 0
# shellcheck disable=SC2064
trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15 trap "rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1; return 1" 1 2 3 15
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
@ -168,9 +171,6 @@ do
done <${_PKG_CFG_FILE}.${_PKG_INSTANCE} done <${_PKG_CFG_FILE}.${_PKG_INSTANCE}
done done
# remove working files
rm -f ${_PKG_RUN_FILE}.* ${_PKG_CFG_FILE}.* >/dev/null 2>&1
return 0 return 0
} }

View File

@ -26,6 +26,7 @@
# @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken] # @(#) 2017-05-07: made checks more detailed for log_hc() [Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -35,7 +36,7 @@ function check_linux_sg_package_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld" typeset _SG_DAEMON="/opt/cmcluster/bin/cmcld"
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -52,7 +53,6 @@ typeset _SG_ENTRY=""
typeset _SG_MATCH="" typeset _SG_MATCH=""
typeset _SG_PACKAGE="" typeset _SG_PACKAGE=""
typeset _SG_CFG_PARAM="" typeset _SG_CFG_PARAM=""
typeset _SG_RUN_PARAM=""
typeset _SG_CFG_VALUE="" typeset _SG_CFG_VALUE=""
typeset _SG_RUN_VALUE="" typeset _SG_RUN_VALUE=""
@ -62,20 +62,20 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# handle configuration file # handle configuration file
[[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}" [[ -n "${ARG_CONFIG_FILE}" ]] && _CONFIG_FILE="${ARG_CONFIG_FILE}"
if [[ ! -r ${_CONFIG_FILE} ]] if [[ ! -r ${_CONFIG_FILE} ]]
then then
warn "unable to read configuration file at ${_CONFIG_FILE}" warn "unable to read configuration file at ${_CONFIG_FILE}"
return 1 return 1
fi fi
# check & get serviceguard status # check & get serviceguard status
if [[ ! -x ${_SG_DAEMON} ]] if [[ ! -x ${_SG_DAEMON} ]]
then then
warn "${_SG_DAEMON} is not installed here" warn "${_SG_DAEMON} is not installed here"
return 1 return 1
@ -86,7 +86,7 @@ else
log_hc "$0" 1 "${_MSG}" log_hc "$0" 1 "${_MSG}"
# dump debug info # dump debug info
(( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs (( ARG_DEBUG != 0 && ARG_DEBUG_LEVEL > 0 )) && dump_logs
return 0 return 0
} }
fi fi
@ -104,14 +104,14 @@ do
if [[ -n "${_SG_MATCH}" ]] if [[ -n "${_SG_MATCH}" ]]
then then
_SG_RUN_VALUE=$(print "${_SG_MATCH}" | cut -f3- -d':' 2>/dev/null | cut -f2 -d'=' 2>/dev/null) # field3-,2 _SG_RUN_VALUE=$(print "${_SG_MATCH}" | cut -f3- -d':' 2>/dev/null | cut -f2 -d'=' 2>/dev/null) # field3-,2
if [[ "${_SG_CFG_VALUE}" = "${_SG_RUN_VALUE}" ]] if [[ "${_SG_CFG_VALUE}" = "${_SG_RUN_VALUE}" ]]
then then
_MSG="package ${_SG_PACKAGE} parameter ${_SG_CFG_PARAM} has a correct value [${_SG_RUN_VALUE}]" _MSG="package ${_SG_PACKAGE} parameter ${_SG_CFG_PARAM} has a correct value [${_SG_RUN_VALUE}]"
_STC=0 _STC=0
else else
_MSG="package ${_SG_PACKAGE} parameter ${_SG_CFG_PARAM} has a wrong value [${_SG_RUN_VALUE}]" _MSG="package ${_SG_PACKAGE} parameter ${_SG_CFG_PARAM} has a wrong value [${_SG_RUN_VALUE}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_SG_RUN_VALUE}" "${_SG_CFG_VALUE}" log_hc "$0" ${_STC} "${_MSG}" "${_SG_RUN_VALUE}" "${_SG_CFG_VALUE}"
else else

View File

@ -32,7 +32,7 @@
function check_linux_sg_qs_status function check_linux_sg_qs_status
{ {
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
typeset _QS_BIN="/opt/qs/bin/qsc" typeset _QS_BIN="/opt/qs/bin/qsc"
typeset _QS_AUTH_FILE="/opt/qs/conf/qs_authfile" typeset _QS_AUTH_FILE="/opt/qs/conf/qs_authfile"
@ -45,7 +45,6 @@ typeset _ARGS=$(data_space2comma "$*")
typeset _ARG="" typeset _ARG=""
typeset _MSG="" typeset _MSG=""
typeset _STC=0 typeset _STC=0
typeset _RC=0
# handle arguments (originally comma-separated) # handle arguments (originally comma-separated)
for _ARG in ${_ARGS} for _ARG in ${_ARGS}
@ -53,12 +52,12 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
# check QS presence # check QS presence
if [[ ! -x ${_QS_BIN} ]] if [[ ! -x ${_QS_BIN} ]]
then then
warn "${_QS_BIN} is not installed here" warn "${_QS_BIN} is not installed here"
return 1 return 1

View File

@ -28,6 +28,7 @@
# @(#) 2018-04-30: fixes on variable names Patrick Van der Veken] # @(#) 2018-04-30: fixes on variable names Patrick Van der Veken]
# @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken] # @(#) 2018-05-20: added dump_logs() [Patrick Van der Veken]
# @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken] # @(#) 2018-05-21: STDERR fixes [Patrick Van der Veken]
# @(#) 2018-10-28: fixed (linter) errors [Patrick Van der Veken]
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING! # DO NOT CHANGE THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING!
#****************************************************************************** #******************************************************************************
@ -38,7 +39,7 @@ function check_linux_vz_ct_status
# ------------------------- CONFIGURATION starts here ------------------------- # ------------------------- CONFIGURATION starts here -------------------------
typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf" typeset _CONFIG_FILE="${CONFIG_DIR}/$0.conf"
typeset _VZLIST_BIN="/usr/sbin/vzlist" typeset _VZLIST_BIN="/usr/sbin/vzlist"
typeset _VERSION="2018-05-21" # YYYY-MM-DD typeset _VERSION="2018-10-28" # YYYY-MM-DD
typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match typeset _SUPPORTED_PLATFORMS="Linux" # uname -s match
# ------------------------- CONFIGURATION ends here --------------------------- # ------------------------- CONFIGURATION ends here ---------------------------
@ -66,7 +67,7 @@ do
case "${_ARG}" in case "${_ARG}" in
help) help)
_show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0 _show_usage $0 ${_VERSION} ${_CONFIG_FILE} && return 0
;; ;;
esac esac
done done
@ -92,15 +93,15 @@ grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _CT_ENTRY
do do
# field split # field split
_CT_ID="$(print ${_CT_ENTRY} | cut -f1 -d';')" _CT_ID="$(print ${_CT_ENTRY} | cut -f1 -d';')"
_CT_CFG_STATUS=$(data_lc $(print "${_CT_ENTRY}" | cut -f2 -d';' 2>/dev/null)) _CT_CFG_STATUS=$(data_lc "$(print \"${_CT_ENTRY}\" | cut -f2 -d';' 2>/dev/null)")
_CT_CFG_BOOT=$(data_lc $(print "${_CT_ENTRY}" | cut -f3 -d';' 2>/dev/null)) _CT_CFG_BOOT=$(data_lc "$(print \"${_CT_ENTRY}\" | cut -f3 -d';' 2>/dev/null)")
# check config # check config
case "${_CT_ID}" in case "${_CT_ID}" in
+([0-9])*(.)*([0-9])) +([0-9])*(.)*([0-9]))
# numeric, OK # numeric, OK
;; ;;
*) *)
# not numeric # not numeric
warn "invalid container ID '${_CT_ID}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid container ID '${_CT_ID}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
@ -109,23 +110,23 @@ do
case "${_CT_CFG_STATUS}" in case "${_CT_CFG_STATUS}" in
running|stopped) running|stopped)
;; ;;
*) *)
warn "invalid container status '${_CT_CFG_STATUS}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid container status '${_CT_CFG_STATUS}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
;; ;;
esac esac
case "${_CT_CFG_BOOT}" in case "${_CT_CFG_BOOT}" in
yes|no) yes|no)
;; ;;
*) *)
warn "invalid container boot value '${_CT_CFG_BOOT}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}" warn "invalid container boot value '${_CT_CFG_BOOT}' in configuration file ${_CONFIG_FILE} at data line ${_LINE_COUNT}"
return 1 return 1
;; ;;
esac esac
_LINE_COUNT=$(( _LINE_COUNT + 1 )) _LINE_COUNT=$(( _LINE_COUNT + 1 ))
done done
# perform checks # perform checks
grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _CT_ENTRY grep -v -E -e '^$' -e '^#' ${_CONFIG_FILE} 2>/dev/null | while read _CT_ENTRY
do do
@ -133,34 +134,34 @@ do
_CT_ID="$(print ${_CT_ENTRY} | cut -f1 -d';')" _CT_ID="$(print ${_CT_ENTRY} | cut -f1 -d';')"
_CT_CFG_STATUS="$(print ${_CT_ENTRY} | cut -f2 -d';')" _CT_CFG_STATUS="$(print ${_CT_ENTRY} | cut -f2 -d';')"
_CT_CFG_BOOT="$(print ${_CT_ENTRY} | cut -f3 -d';')" _CT_CFG_BOOT="$(print ${_CT_ENTRY} | cut -f3 -d';')"
# check run-time values # check run-time values
_CT_MATCH=$(grep -i "^[[:space:]]*${_CT_ID}" ${HC_STDOUT_LOG} 2>/dev/null) _CT_MATCH=$(grep -i "^[[:space:]]*${_CT_ID}" ${HC_STDOUT_LOG} 2>/dev/null)
if [[ -n "${_CT_MATCH}" ]] if [[ -n "${_CT_MATCH}" ]]
then then
# field split # field split
_CT_RUN_STATUS=$(data_lc $(print "${_CT_MATCH}" | tr -s ' ' ';' 2>/dev/null | cut -f3 -d';' 2>/dev/null)) _CT_RUN_STATUS=$(data_lc "$(print \"${_CT_MATCH}\" | tr -s ' ' ';' 2>/dev/null | cut -f3 -d';' 2>/dev/null)")
_CT_RUN_BOOT=$(data_lc $(print "${_CT_MATCH}" | tr -s ' ' ';' 2>/dev/null | cut -f4 -d';' 2>/dev/null)) _CT_RUN_BOOT=$(data_lc "$(print \"${_CT_MATCH}\" | tr -s ' ' ';' 2>/dev/null | cut -f4 -d';' 2>/dev/null)")
if [[ "${_CT_RUN_STATUS}" = "${_CT_CFG_STATUS}" ]] if [[ "${_CT_RUN_STATUS}" = "${_CT_CFG_STATUS}" ]]
then then
_MSG="container ${_CT_ID} has a correct status [${_CT_RUN_STATUS}]" _MSG="container ${_CT_ID} has a correct status [${_CT_RUN_STATUS}]"
_STC=0 _STC=0
else else
_MSG="container ${_CT_ID} has a wrong status [${_CT_RUN_STATUS}]" _MSG="container ${_CT_ID} has a wrong status [${_CT_RUN_STATUS}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_CT_RUN_STATUS}" "${_CT_CFG_STATUS}" log_hc "$0" ${_STC} "${_MSG}" "${_CT_RUN_STATUS}" "${_CT_CFG_STATUS}"
if [[ "${_CT_RUN_BOOT}" = "${_CT_CFG_BOOT}" ]] if [[ "${_CT_RUN_BOOT}" = "${_CT_CFG_BOOT}" ]]
then then
_MSG="container ${_CT_ID} has a correct boot flag [${_CT_RUN_BOOT}]" _MSG="container ${_CT_ID} has a correct boot flag [${_CT_RUN_BOOT}]"
_STC=0 _STC=0
else else
_MSG="container ${_CT_ID} has a wrong boot flag [${_CT_RUN_BOOT}]" _MSG="container ${_CT_ID} has a wrong boot flag [${_CT_RUN_BOOT}]"
_STC=1 _STC=1
fi fi
log_hc "$0" ${_STC} "${_MSG}" "${_CT_RUN_BOOT}" "${_CT_CFG_BOOT}" log_hc "$0" ${_STC} "${_MSG}" "${_CT_RUN_BOOT}" "${_CT_CFG_BOOT}"
else else
warn "could not determine status for container ${_CT_ID} from command output {${_VZLIST_BIN}}" warn "could not determine status for container ${_CT_ID} from command output {${_VZLIST_BIN}}"
_RC=1 _RC=1