mirror of https://github.com/lukechilds/umbrel.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.2 KiB
51 lines
1.2 KiB
#!/usr/bin/env bash
|
|
|
|
UMBREL_ROOT="$(readlink -f $(dirname "${BASH_SOURCE[0]}")/../../..)"
|
|
block_device="${1}"
|
|
mount_point="${2}"
|
|
|
|
set_status="/status-server/set-status"
|
|
setup_iptables="/status-server/setup-iptables"
|
|
|
|
check_if_not_already_running() {
|
|
if ps ax | grep $0 | grep -v $$ | grep bash | grep -v grep
|
|
then
|
|
echo "storage monitor is already running"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main () {
|
|
check_if_not_already_running
|
|
|
|
while true; do
|
|
if ! [[ -e "/dev/${block_device}" ]]; then
|
|
echo "Mounted block device no longer exists!"
|
|
break
|
|
fi
|
|
|
|
if ! grep --quiet " ${mount_point} " /proc/mounts; then
|
|
echo "External storage is no longer mounted!"
|
|
break
|
|
fi
|
|
|
|
if grep " ${mount_point} " /proc/mounts | grep --quiet '[ ,]ro[ ,]'; then
|
|
echo "External storage is mounted as read only!"
|
|
break
|
|
fi
|
|
|
|
if ! df -h "${UMBREL_ROOT}" | grep --quiet "/dev/${block_device}"; then
|
|
echo "Umbrel root is no longer bind mounted to external storage!"
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
|
|
echo "Stopping Umbrel due to failed storage device check..."
|
|
docker kill $(docker ps -aq)
|
|
$set_status mount errored monitor-check
|
|
$setup_iptables --force
|
|
}
|
|
|
|
main
|
|
|