CreatBotCrowsnest/libs/watchdog.sh
Stephan Wendel a07e42a1ac
fix: fix error exit on failure
Signed-off-by: Stephan Wendel <me@stephanwe.de>
2023-04-18 20:06:57 +02:00

78 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
#### Watchdog
#### crowsnest - A webcam Service for multiple Cams and Stream Services.
####
#### Written by Stephan Wendel aka KwadFan <me@stephanwe.de>
#### Copyright 2021
#### https://github.com/mainsail-crew/crowsnest
####
#### This File is distributed under GPLv3
####
# shellcheck enable=require-variable-braces
# Exit upon Errors
set -Ee
#### Watchdog Functions and Variables
## Do not reuse functions from other libs/scripts!
# We want watchdog operating independently!
function clean_watchdog {
rm -f /tmp/lost-*
}
function crowsnest_watchdog {
# Helper Functions
function available {
find "${1}" &> /dev/null
echo "${?}"
}
function lost_dev {
local 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 "${?}"
}
function returned_dev {
local lostdev
lostdev="$(echo "${1}"| awk -F '/' '{print $NF}')"
rm -f /tmp/lost-"${lostdev}" &> /dev/null
}
function get_conf_devices {
local gcd
for i in $(crudini --existing=file --get "${CROWSNEST_CFG}" | \
sed '/crowsnest/d' | cut -d ' ' -f2); do
gcd+=("${i}")
done
echo "${gcd[@]}"
}
### MAIN
for i in $(get_conf_devices); do
cc="$(crudini --get "${CROWSNEST_CFG}" "cam ${i}" "device" \
| awk '{print $1}')"
if [[ ! "${cc}" =~ "/base/soc" ]] &&
[[ "$(available "${cc}")" -ne 0 ]] && [[ "$(is_lost "${cc}")" -ne 0 ]]; then
log_msg "WATCHDOG: Lost Device: '${cc}'"
lost_dev "${cc}"
elif [[ ! "${cc}" =~ "/base/soc" ]] &&
[[ "$(is_lost "${cc}")" -eq 0 ]] && [[ "$(available "${cc}")" -eq 0 ]]; then
log_msg "WATCHDOG: Device '${cc}' returned."
returned_dev "${cc}"
fi
done
}