REFACTOR: Refactored libs/watchdog.sh
* Shortend Code of MAIN section. * Added function get_conf_devices * SHELLCHECK: Enabled requires-variable-braces Signed-off-by: Stephan Wendel <me@stephanwe.de>
This commit is contained in:
parent
1b89b86545
commit
a17d063145
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user