Mise à jour des scripts

This commit is contained in:
jlecour 2019-09-18 14:35:21 +02:00
parent c2ab3529c3
commit 065626d815

View file

@ -16,13 +16,13 @@ Un script `alerts_switch` s'occupera de gérer le fichier temporaire.
# /usr/share/script/alerts_switch disable tomcat # /usr/share/script/alerts_switch disable tomcat
~~~ ~~~
Cette action va créer un fichier temporaire `/tmp/tomcat_alerts_disabled` et inscrire une entrée datée dans le fichier `/var/log/tomcat_alerts.log`. Cette action va créer un fichier temporaire `/var/lib/misc/tomcat_alerts_disabled` et inscrire une entrée datée dans le fichier `/var/log/tomcat_alerts.log`.
~~~ ~~~
# /usr/share/script/alerts_switch enable tomcat # /usr/share/script/alerts_switch enable tomcat
~~~ ~~~
Cette action va renommer le fichier en `/tmp/tomcat_alerts_enabled` s'il existe ou le créer (pour indiquer clairement qu'on a souhaité que les alertes soient activées). Cette action va renommer le fichier en `/var/lib/misc/tomcat_alerts_enabled` s'il existe ou le créer (pour indiquer clairement qu'on a souhaité que les alertes soient activées).
NB : on ne se contente pas de supprimer le fichier "disabled" pour ne pas risquer de supprimer un fichier important qui serait là au préalable, portant par malchance le même nom. NB : on ne se contente pas de supprimer le fichier "disabled" pour ne pas risquer de supprimer un fichier important qui serait là au préalable, portant par malchance le même nom.
@ -31,6 +31,11 @@ Détail du script `alerts_switch` :
~~~{.bash} ~~~{.bash}
#!/bin/bash #!/bin/bash
# https://forge.evolix.org/projects/evolix-private/repository
#
# You should not alter this file.
# If you need to, create and customize a copy.
set -e set -e
readonly PROGNAME=$(basename $0) readonly PROGNAME=$(basename $0)
@ -49,6 +54,7 @@ disable_alerts () {
mv "${enabled_file}" "${disabled_file}" mv "${enabled_file}" "${disabled_file}"
else else
touch "${disabled_file}" touch "${disabled_file}"
chmod 0644 "${disabled_file}"
fi fi
} }
@ -60,6 +66,7 @@ enable_alerts () {
mv "${disabled_file}" "${enabled_file}" mv "${disabled_file}" "${enabled_file}"
else else
touch "${enabled_file}" touch "${enabled_file}"
chmod 0644 "${enabled_file}"
fi fi
} }
@ -68,18 +75,21 @@ now () {
} }
log_disable () { log_disable () {
echo "$(now) - alerts disabled by $(logname)" >> $1 echo "$(now) - alerts disabled by $(logname || echo unknown)" >> $1
} }
log_enable () { log_enable () {
echo "$(now) - alerts enabled by $(logname)">> $1 echo "$(now) - alerts enabled by $(logname || echo unknown)" >> $1
} }
main () { main () {
local action=$1 local action=$1
local prefix=$2 local prefix=$2
local file_path="/tmp/${prefix}_alerts" local base_dir="/var/lib/misc"
mkdir -p "${base_dir}"
local file_path="${base_dir}/${prefix}_alerts"
local log_file="/var/log/${prefix}_alerts.log" local log_file="/var/log/${prefix}_alerts.log"
case "$action" in case "$action" in
@ -127,25 +137,41 @@ Détail du script `alerts_wrapper` :
~~~{.bash} ~~~{.bash}
#!/bin/bash #!/bin/bash
readonly check_file="/tmp/$1_alerts_disabled" # https://forge.evolix.org/projects/evolix-private/repository
#
# You should not alter this file.
# If you need to, create and customize a copy.
readonly check_name="${1}"
readonly check_file="/var/lib/misc/${check_name}_alerts_disabled"
readonly check_stdout=$(mktemp --tmpdir=/tmp "${check_name}_stdout.XXXX")
trap "rm ${check_stdout}" EXIT
shift shift
readonly check_stdout=$($@) readonly check_command="$@"
$check_command > $check_stdout
readonly check_rc=$? readonly check_rc=$?
if [ -e "${check_file}" ]; then delay=0
local last_change=$(stat -c %Z "${check_file}")
local limit=$(date --date '24 hours ago' +'%s')
if [ ${last_change} -le ${limit} ]; then if [ -e "${check_file}" ]; then
rm "${check_file}" readonly last_change=$(stat -c %Z "${check_file}")
readonly limit=$(date --date '24 hours ago' +'%s')
delay=$((${last_change} - ${limit}))
if [ "${delay}" -le "0" ]; then
sudo /usr/share/scripts/alerts_switch enable ${check_name}
fi fi
fi fi
if [ -e "${check_file}" ]; then if [ -e "${check_file}" ]; then
local formatted_last_change=$(date --date "@$(stat -c %Z "${check_file}")" +'%c') readonly formatted_last_change=$(date --date "@$(stat -c %Z "${check_file}")" +'%c')
echo "ALERTS DISABLED (since ${formatted_last_change}) - ${check_stdout}" echo "ALERTS DISABLED for ${check_name} (since ${formatted_last_change}, delay: ${delay} sec) - ${check_stdout}"
if [ ${check_rc} = 0 ]; then if [ ${check_rc} = 0 ]; then
# Nagios OK # Nagios OK
exit 0 exit 0
@ -154,14 +180,14 @@ if [ -e "${check_file}" ]; then
exit 1 exit 1
fi fi
else else
echo ${check_stdout} cat ${check_stdout}
exit ${check_rc} exit ${check_rc}
fi fi
~~~ ~~~
Le wrapper exécute le check et en met de côté la sortie standard et le code de sortie. Le wrapper exécute le check et en met de côté la sortie standard et le code de sortie.
Il cherche ensuite le fichier `/var/tmp/tomcat_alerts_disabled`. Il cherche ensuite le fichier `/var/lib/misc/tomcat_alerts_disabled`.
S'il est présent et vieux de plus de 24h, il sera détruit pour ne pas risquer d'oubli. S'il est présent et vieux de plus de 24h, il sera détruit pour ne pas risquer d'oubli.