#!/bin/bash set -o allexport source .post_startup_env set +o allexport check_datasets_to_unlock () { local num_datasets_to_unlock=0 for dataset in $(zfs list -H -p -o name,encryptionroot | awk -F "\t" '{if ($1 == $2) { print $1 }}') do if [ "$(zfs get -H -p -o value keylocation "$dataset")" = "prompt" ] && [ "$(zfs get -H -p -o value keystatus "$dataset")" = "unavailable" ] then local num_datasets_to_unlock=$((num_datasets_to_unlock+1)) fi done return $num_datasets_to_unlock } # /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// echo "Checking for locked datasets..." echo while true; do check_datasets_to_unlock datasets_to_unlock=$? sleep 1 if [[ "$datasets_to_unlock" -eq "0" ]]; then echo "All datasets have been unlocked." echo break else echo "There are $datasets_to_unlock dataset(s) to unlock:" echo sudo /usr/bin/zfs mount -a -l echo fi done echo echo "Starting relevant docker containers..." echo sleep 1 for docker_folder in ${DOCKERS_TO_START//,/ } do sudo --user=docker /usr/bin/docker compose --file $DOCKER_HOME/$docker_folder/docker-compose.yml up -d echo done echo echo "Restarting relevant docker containers..." echo sleep 1 for docker_folder in ${DOCKERS_TO_RESTART//,/ } do sudo --user=docker /usr/bin/docker compose --file $DOCKER_HOME/$docker_folder/docker-compose.yml restart echo done echo echo "Completed post startup script."