Fail properly in all scripts when required commands are not available
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Alexander Schäferdiek 2023-01-25 09:42:22 +01:00
parent 4d47fd31db
commit 71977c9dca
13 changed files with 100 additions and 11 deletions

View file

@ -13,11 +13,6 @@ EOF
set -e;
HOSTNAME=$(hostname)
DISK_SPACE_ALERT_MAIL_ADDRESS="";
DISK_SPACE_ALERT_THRESHOLD=93
DISK_SPACE_ALERT_MOUNTPOINTS=("/")
# check for config file
apply_config() {
local config=$1;
@ -55,7 +50,20 @@ source_config() {
return;
fi
}
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type df &> /dev/null || { echo "Requiring 'df' but it's not installed"; exit 1; }
}
source_config "$1" "$HOME/.disk_space_alert.conf" "/etc/disk_space_alert.conf"
check_required
HOSTNAME=$(hostname)
DISK_SPACE_ALERT_MAIL_ADDRESS="";
DISK_SPACE_ALERT_THRESHOLD=93
DISK_SPACE_ALERT_MOUNTPOINTS=("/")
for point in "${DISK_SPACE_ALERT_MOUNTPOINTS[@]}"
do

View file

@ -13,7 +13,6 @@ EOF
set -e;
HOSTNAME=$(hostname)
DOCKER_CHECK_LIST_FILE="$HOME/.docker_check.list"
DOCKER_CHECK_GLOBAL_LIST_FILE="/etc/docker_check.list"
DOCKER_CHECK_NOTIFY_LEVELS=("UNKNOWN" "WARNING" "CRITICAL")
@ -58,7 +57,17 @@ source_config() {
return;
fi
}
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type docker &> /dev/null || { echo "Requiring 'docker' but it's not installed"; exit 1; }
}
source_config "$1" "$HOME/.docker_check.conf" "/etc/docker_check.conf"
check_required
HOSTNAME=$(hostname)
listFileToUse=""
if [[ -f "$DOCKER_CHECK_LIST_FILE" ]]; then

View file

@ -67,6 +67,8 @@ check_required() {
echo "DOCKER_COMPOSE_UPDATE_COMMAND is required"
exit 1;
fi
type docker-compose &> /dev/null || { echo "Requiring 'docker-compose' but it's not installed"; exit 1; }
}
# check requirements

View file

@ -1,5 +1,12 @@
#!/usr/bin/env bash
check_required() {
type docker &> /dev/null || { echo "Requiring 'docker' but it's not installed"; exit 1; }
type yes &> /dev/null || { echo "Requiring 'yes' but it's not installed"; exit 1; }
}
check_required
echo "Doing docker housekeeping for containers, images and volumes";
yes | docker container prune

View file

@ -82,6 +82,12 @@ check_required() {
echo "DYNV6_HOSTNAME is required"
exit 1;
fi
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type ip &> /dev/null || { echo "Requiring 'ip' but it's not installed"; exit 1; }
type grep &> /dev/null || { echo "Requiring 'grep' but it's not installed"; exit 1; }
type curl &> /dev/null || { echo "Requiring 'curl' but it's not installed"; exit 1; }
}
# check requirements

View file

@ -13,8 +13,6 @@ EOF
set -e;
HOSTNAME=$(hostname)
SUBJECT="[memory $HOSTNAME] memory is low"
MEMORY_USAGE_ALERT_MAIL_ADDRESS="";
MEMORY_USAGE_ALERT_THRESHOLD=512;
@ -56,7 +54,17 @@ source_config() {
fi
}
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type free &> /dev/null || { echo "Requiring 'free' but it's not installed"; exit 1; }
}
source_config "$1" "$HOME/.memory_usage_alert.conf" "/etc/memory_usage_alert.conf"
check_required
HOSTNAME=$(hostname)
SUBJECT="[memory $HOSTNAME] memory is low"
# DO NOT TOUCH BELOW
total=$(free -mt | grep Total | awk '{print $2}')

View file

@ -6,6 +6,13 @@
# - align with umask 022 (755 on folders, 644 on files)
# - keep +x flag for already executable files if enabled (default)
check_required() {
type find &> /dev/null || { echo "Requiring 'find' but it's not installed"; exit 1; }
type chmod &> /dev/null || { echo "Requiring 'chmod' but it's not installed"; exit 1; }
}
check_required
DIR="$1"
KEEP_EXECUTABLE_FILES="$2"

View file

@ -7,6 +7,13 @@
# - keep +x flag for already executable files if enabled (default, otherwise set to no)
# - set 700 (only allow owner to go into directory)
check_required() {
type find &> /dev/null || { echo "Requiring 'find' but it's not installed"; exit 1; }
type chmod &> /dev/null || { echo "Requiring 'chmod' but it's not installed"; exit 1; }
}
check_required
DIR="$1"
KEEP_EXECUTABLE_FILES="$2"

View file

@ -22,7 +22,6 @@ EOF
set -e;
HOSTNAME=$(hostname)
SMARTCTL_TESTS_LONG_MAIL_ADDRESS="";
SMARTCTL_TESTS_LONG_DEVICES=(sda)
@ -63,8 +62,17 @@ source_config() {
return;
fi
}
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type smartctl &> /dev/null || { echo "Requiring 'smartctl' but it's not installed"; exit 1; }
}
source_config "$1" "$HOME/.smartctl_tests_long.conf" "/etc/smartctl_tests_long.conf"
HOSTNAME=$(hostname)
echo "Starting long tests for ...";
for d in "${SMARTCTL_TESTS_LONG_DEVICES[@]}"; do

View file

@ -1,5 +1,13 @@
#!/usr/bin/env bash
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type wall &> /dev/null || { echo "Requiring 'wall' but it's not installed"; exit 1; }
}
check_required
HOSTNAME=$(hostname)
echo "$SMARTD_MESSAGE" | mail -s "[smartd $HOSTNAME] $SMARTD_FAILTYPE" "$SMARTD_ADDRESS"
wall "$SMARTD_MESSAGE"

View file

@ -2,6 +2,11 @@
set -e;
check_required() {
type openssl &> /dev/null || { echo "Requiring 'openssl' but it's not installed"; exit 1; }
type ssh-keygen &> /dev/null || { echo "Requiring 'ssh-keygen' but it's not installed"; exit 1; }
}
name=$1;
encryption=$2;
@ -14,5 +19,7 @@ if [[ -z ${encryption} ]]; then
encryption=4096;
fi
check_required
openssl genrsa -out "${name}" "${encryption}"
ssh-keygen -y -f "${name}" > "${name}.pub"

View file

@ -19,8 +19,6 @@ SYSTEMD_CHECK_LIST_FILE="$HOME/.systemd_check.list"
SYSTEMD_CHECK_GLOBAL_LIST_FILE="/etc/systemd_check.list"
SYSTEMD_CHECK_MAIL_ENABLED=fase
SYSTEMD_CHECK_MAIL_ADDRESS=""
SYSTEMD_CHECK_HOSTNAME=$(hostname)
SYSTEMD_CHECK_USER=$(whoami)
SYSTEMD_CHECK_SERVICES=()
# check for config file
@ -60,7 +58,19 @@ source_config() {
return;
fi
}
check_required() {
type hostname &> /dev/null || { echo "Requiring 'hostname' but it's not installed"; exit 1; }
type mailx &> /dev/null || { echo "Requiring 'mailx' but it's not installed"; exit 1; }
type whoami &> /dev/null || { echo "Requiring 'whoami' but it's not installed"; exit 1; }
type systemctl &> /dev/null || { echo "Requiring 'systemctl' but it's not installed"; exit 1; }
}
source_config "$1" "$HOME/.systemd_check.conf" "/etc/systemd_check.conf"
check_required
SYSTEMD_CHECK_HOSTNAME=$(hostname)
SYSTEMD_CHECK_USER=$(whoami)
listFileToUse=""
if [[ -f "$SYSTEMD_CHECK_LIST_FILE" ]]; then

View file

@ -58,6 +58,8 @@ check_requirements() {
if [[ "${gotifyEnabled}" == "true" ]]; then
type gotify &> /dev/null || { echo "Requiring 'gotify' but it's not installed"; exit 1; }
fi
type whoami &> /dev/null || { echo "Requiring 'whoami' but it's not installed"; exit 1; }
}
source_config() {