diff --git a/libs/watchdog.sh b/libs/watchdog.sh index 40b9698..7d0a0ee 100755 --- a/libs/watchdog.sh +++ b/libs/watchdog.sh @@ -11,62 +11,65 @@ #### This File is distributed under GPLv3 #### +# shellcheck enable=requires-variable-braces + # Exit upon Errors set -e #### Watchdog Functions and Variables -## Do not reuse previous functions! +## Do not reuse functions from other libs/scripts! +# We want watchdog operating independently! + function clean_watchdog { - rm -f $PWD/lost-* + rm -f /tmp/lost-* } function webcamd_watchdog { # Helper Functions function available { - find ${1} &> /dev/null - echo $? + find "${1}" &> /dev/null + echo "${?}" } function lost_dev { local lostfile - lostfile="$(echo ${1} | awk -F '/' '{print $NF}')" - touch /tmp/lost-${lostfile} + lostfile="$(echo "${1}" | awk -F '/' '{print $NF}')" + touch /tmp/lost-"${lostfile}" } function is_lost { local lostdev - lostdev="$(echo ${1} | awk -F '/' '{print $NF}')" - find /tmp/lost-${lostdev} &> /dev/null - echo $? + lostdev="$(echo "${1}" | awk -F '/' '{print $NF}')" + find /tmp/lost-"${lostdev}" &> /dev/null + echo "${?}" } function returned_dev { local lostdev - lostdev="$(echo ${1} | awk -F '/' '{print $NF}')" - rm -f /tmp/lost-${lostdev} &> /dev/null + lostdev="$(echo "${1}"| awk -F '/' '{print $NF}')" + rm -f /tmp/lost-"${lostdev}" &> /dev/null } - # local Vars - local get_conf_devices conf_cams avail_cams - # Init empty Arrays - get_conf_devices=() - conf_cams=() - # Grab devices from config file - get_conf_devices=("$(crudini --existing=file --get "${WEBCAMD_CFG}" | \ - sed '/webcamd/d' | cut -d ' ' -f2)") - # Construct Array with configured Devices - for gcd in ${get_conf_devices[*]}; do - conf_cams+=("$(crudini --get "${WEBCAMD_CFG}" "cam ${gcd}" "device" \ - | awk '{print $1}')") + function get_conf_devices { + local gcd + for i in $(crudini --existing=file --get "${WEBCAMD_CFG}" | \ + sed '/webcamd/d' | cut -d ' ' -f2); do + gcd+=("${i}") done - # Send Message if Device available or returned. - for cc in ${conf_cams[*]}; do - if [ "$(available ${cc})" -ne 0 ] && [ "$(is_lost ${cc})" -ne 0 ]; then - log_msg "WATCHDOG: Lost Device: "${cc}"" - lost_dev "${cc}" - elif [ "$(is_lost ${cc})" -eq 0 ] && [ "$(available ${cc})" -eq 0 ]; then - log_msg "WATCHDOG: Device ${cc} returned." - returned_dev "${cc}" - fi + echo "${gcd[@]}" + } + + ### MAIN + + for i in $(get_conf_devices); do + cc="$(crudini --get "${WEBCAMD_CFG}" "cam ${i}" "device" \ + | awk '{print $1}')" + if [ "$(available "${cc}")" -ne 0 ] && [ "$(is_lost "${cc}")" -ne 0 ]; then + log_msg "WATCHDOG: Lost Device: '${cc}'" + lost_dev "${cc}" + elif [ "$(is_lost "${cc}")" -eq 0 ] && [ "$(available "${cc}")" -eq 0 ]; then + log_msg "WATCHDOG: Device '${cc}' returned." + returned_dev "${cc}" + fi done }