Changement systeme d attente fin de test

Passage de TEMPS_MAX pour le disque le plus lent à un tests toutes les X minutes si au moins un des disques n'a pas fini.
This commit is contained in:
John Doe 2021-01-01 20:06:41 +01:00
parent fc41d98e19
commit b4a6c93514
1 changed files with 21 additions and 6 deletions

View File

@ -6,6 +6,7 @@ OUTPUT=($(lsblk -dpno name)) #Listing des disques présents sur la machine sous
ARRAY_TEMPS=() #Creation d un array vide
LOG=($(eval echo ~$USER/SANTE_DISK)) #Chemin du fichier de sortie du test (dans le repertoire home de l utilisateur)
PACKAGES=(smartmontools mailutils) #Liste des paquets necessaires
FIN_TEST="NOK"
for i in "${PACKAGES[@]}" #Verification et installation des paquets necessaires
do
@ -25,14 +26,28 @@ done
TEMPS_MAX=0 #RAZ du temps de polling
for i in "${ARRAY_TEMPS[@]}" #recherche de la valeur max dans les temps de polling extraits
while [ "$FIN_TEST" = "NOK" ]
do
if (("$i" > $TEMPS_MAX))
then TEMPS_MAX="$i"
fi
FIN_TEST="OK"
for i in "${OUTPUT[@]}"
do
if /usr/sbin/smartctl -c "$i" | grep "Self-test routine in progress"; then #Si scan non fini
FIN_TEST="NOK" #On repasse la variable FIN_TEST a FALSE
echo $FIN_TEST
sleep 5m #On attend pour relancer la boucle de test de statut
break #on stop la boucle ici, inutile de scanner les statuts des autres disques
fi
done
done
sleep "$TEMPS_MAX"m #Attente de fin des tests
#for i in "${ARRAY_TEMPS[@]}" #recherche de la valeur max dans les temps de polling extraits
#do
# if (("$i" > $TEMPS_MAX))
# then TEMPS_MAX="$i"
# fi
#done
#
#sleep "$TEMPS_MAX"m #Attente de fin des tests
for i in "${OUTPUT[@]}" #Boucle d inscription des résultats dans le fichier de sortie
do
@ -53,4 +68,4 @@ echo "**************************************************
**************************************************"
cat $LOG | /usr/bin/mailx -s "Sante des disques sur $HOSTNAME" $USER@$HOSTNAME #envoi de mail
read'
read'