diff --git a/check.sh b/check.sh new file mode 100755 index 0000000..5ea553a --- /dev/null +++ b/check.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# check if container services are running + +UNITS="/var/containers/systemd" +FAILED="" + +check_service() { + local service=$1 + + systemctl is-active --user --machine=container@ $service >/dev/null + if [ $? -ne 0 ]; then + FAILED="$FAILED $service" + fi +} + +check() { + local type=$1 + for i in $UNITS/$type/*.socket; do + check_service $(basename $i) + done + + for i in $UNITS/$type/*.container; do + check_service $(basename $i .container).service + done +} + +check user +check system + +if [ -z "$FAILED" ]; then + echo "OK All services are running" + exit 0 +else + echo "#" >&2 + echo "# ERROR some services are not running:" >&2 + echo "#" >&2 + echo "# $FAILED" >&2 + echo "#" >&2 + exit 1 +fi diff --git a/hamiller.sh b/hamiller.sh index 1b1f529..4f3383f 100755 --- a/hamiller.sh +++ b/hamiller.sh @@ -3,15 +3,15 @@ USER_CONTAINERS= ROOT_CONTAINERS="pihole" -BACKUP_TARGET=/var/docker/tmp +BACKUP_TARGET=/var/containers/tmp NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" backup_daily1() { BACKUP_SOURCE="/var" - BACKUP_EXCLUDE_DIRS=(docker) + BACKUP_EXCLUDE_DIRS=(containers) } backup_daily2() { - BACKUP_SOURCE="/var/docker" + BACKUP_SOURCE="/var/containers" BACKUP_EXCLUDE_DIRS=(tmp) } @@ -27,5 +27,7 @@ after_backup() { let rc=rc+$? copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" let rc=rc+$? + check_services + let rc=rc+$? return $rc } diff --git a/mail.sh b/mail.sh index 37dae9b..6f5f948 100755 --- a/mail.sh +++ b/mail.sh @@ -29,7 +29,7 @@ else fi if [ "$myip" != "$MAILSERVER_IP" ]; then - $REMOTE=yes + REMOTE=yes fi TO=$1 @@ -46,9 +46,9 @@ fi # Mail body aus Datei oder STDIN holen CONTENT=$(cat ${1:--}) -MAILCMD="$PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t" +MAILCMD="$SUDO $PODMAN exec -i $MAILCONTAINER /usr/sbin/sendmail -i -t" if [ ! -z "$REMOTE" ]; then - MAILCMD="ssh $MAILSERVER_IP \"$SUDO $MAILCMD\"" + MAILCMD="ssh $MAILSERVER_IP \"$MAILCMD\"" fi # construct mail header + content and pipe to sendmail cat < \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B" - for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do - log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db" - $DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE - is_error $? false && return 1 - done - return 0 -} +#dump_mariadb() { +# return 0 +# log $DEBUG "$DBG dump_mariadb( $@ )" +# local dump_dir=$1 +# local mysqlconnect="--user=root --password=snafu" +# +# log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb --silent --user=xxx --password=xxx -e \"show databases\" -B" +# for db in $($DOCKER exec mysql /usr/bin/mariadb --silent $mysqlconnect -e "show databases" -B 2>>$LOG_FILE | grep -v information_schema 2>>$LOG_FILE | grep -v performance_schema 2>>$LOG_FILE | sed -e 's/\r//' 2>>$LOG_FILE); do +# log $DEBUG "$DBG > \$DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob --user=xxx --password=xxx --databases $db" +# $DOCKER exec mysql /usr/bin/mariadb-dump --hex-blob $mysqlconnect --databases $db >$dump_dir/$db.sql 2>>$LOG_FILE +# is_error $? false && return 1 +# done +# return 0 +#} dump_postgresql() { local pg_container=$1 @@ -151,11 +151,11 @@ check_root() { start_containers() { local let rc=0 log $DEBUG "$DBG start_containers()" - if [ -f /var/docker/run/docker-compose.yml ]; then - log $DEBUG "$DBG > \$DOCKER up -d" - $DOCKER up -d >>$LOG_FILE 2>&1 - let rc=rc+$? - fi +# if [ -f /var/docker/run/docker-compose.yml ]; then +# log $DEBUG "$DBG > \$DOCKER up -d" +# $DOCKER up -d >>$LOG_FILE 2>&1 +# let rc=rc+$? +# fi if [ -d /var/containers ]; then do_start_stop_containers start let rc=rc+$? @@ -166,11 +166,11 @@ start_containers() { stop_containers() { local let rc=0 log $DEBUG "$DBG stop_containers()" - if [ -f /var/docker/run/docker-compose.yml ]; then - log $DEBUG "$DBG > \$DOCKER down" - $DOCKER down >>$LOG_FILE 2>&1 - let rc=rc+$? - fi +# if [ -f /var/docker/run/docker-compose.yml ]; then +# log $DEBUG "$DBG > \$DOCKER down" +# $DOCKER down >>$LOG_FILE 2>&1 +# let rc=rc+$? +# fi if [ -d /var/containers ]; then do_start_stop_containers stop let rc=rc+$? @@ -195,6 +195,12 @@ do_start_stop_containers() { return $rc } +check_services() { + log $DEBUG "$DBG check_services()" + $HERE/check.sh >>$LOG_FILE 2>&1 + return $? +} + # Zugriffsrechte für Logs und Backups setzen # fix_acls() { diff --git a/main.sh b/main.sh index 099be41..2298699 100755 --- a/main.sh +++ b/main.sh @@ -3,6 +3,8 @@ # entrypoint for all actions # +# 2.1.14 09.05.2025 - Fix mail.sh, homeserver.target, cleared all docker references +# 2.1.13 08.05.2025 - check if services are running after backup # 2.1.12 08.05.2025 - mail.sh an neuen Container angepasst # 2.1.11 05.05.2025 - Fix DB-Dump # 2.1.10 05.05.2025 - Postgres-Dump auf podman umgestellt @@ -11,7 +13,7 @@ # 2.1.7 29.04.2025 - 1. Schritt zur Umstellung auf podman # 2.1.6 29.04.2025 - weekly backup Sa->SO -VER="2.1.12" +VER="2.1.13" HERE=$(dirname "$0") THIS_SCRIPT=$0 diff --git a/nathan.sh b/nathan.sh index 76ac031..26848ff 100755 --- a/nathan.sh +++ b/nathan.sh @@ -1,25 +1,25 @@ #!/usr/bin/env bash -USER_CONTAINERS="homeassistant-pod codeserver jellyfin pgadmin nextcloud-pod calibre nexus git-pod caddy.socket caddy smtp-relay roonserver" +USER_CONTAINERS="homeserver.target" ROOT_CONTAINERS= -DOCKER_ROOT=/var/docker +#DOCKER_ROOT=/var/docker CONTAINERS_ROOT=/var/containers -BACKUP_TARGET=$DOCKER_ROOT/tmp +BACKUP_TARGET=$CONTAINERS_ROOT/tmp NAS_TARGET="$NAS_ROOT/daily/$HOST_NAME/backup.$DAY" backup_daily1() { BACKUP_SOURCE="/var" - BACKUP_EXCLUDE_DIRS=(docker) + BACKUP_EXCLUDE_DIRS=(containers) } backup_daily2() { - BACKUP_SOURCE="/var/docker" + BACKUP_SOURCE="/var/containers" BACKUP_EXCLUDE_DIRS=(vol tmp) } backup_daily3() { - BACKUP_SOURCE="/var/docker/vol" + BACKUP_SOURCE="/var/containers/vol" BACKUP_EXCLUDE_DIRS=() } @@ -45,5 +45,7 @@ after_backup() { let rc=rc+$? copy_to_nas "$BACKUP_TARGET" "$NAS_TARGET" let rc=rc+$? + check_services + let rc=rc+$? return $rc }