Correction regression si tache cron
- Le log était envoyé avant la fin des tests - Suppression du "read" à la fin du bloc des echo "xx% restant"
This commit is contained in:
parent
818893e7c1
commit
d2fd6588eb
|
@ -79,39 +79,42 @@ do
|
|||
/usr/sbin/smartctl -t "$TYPE_TEST" "$i" > /dev/null 2>&1
|
||||
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
|
||||
do
|
||||
if (("$i" > $TEMPS_MAX))
|
||||
then TEMPS_MAX="$i"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$RUNNING_FROM_CRON" == "0" ]; then
|
||||
echo ""
|
||||
fi
|
||||
|
||||
TEMPS_MAX=0 #RAZ du temps de polling
|
||||
while [ "$FIN_TEST" = "NOK" ] #On boucle tant qu au moins un disque n a pas fini son selftest
|
||||
do
|
||||
ECRIRE="FALSE"
|
||||
FIN_TEST="OK"
|
||||
TEMPS=($(date +"%T"))
|
||||
|
||||
for i in "${ARRAY_TEMPS[@]}" #recherche de la valeur max dans les temps de polling extraits
|
||||
for i in "${!DISKS[@]}"
|
||||
do
|
||||
if (("$i" > $TEMPS_MAX))
|
||||
then TEMPS_MAX="$i"
|
||||
MODEL=($(/usr/sbin/smartctl -i ${DISKS[$i]} | grep "Device Model:" | sed "s/Device Model: //g"))
|
||||
if /usr/sbin/smartctl -c "${DISKS[$i]}" | grep "Self-test routine in progress" > /dev/null 2>&1; then #Si scan non fini
|
||||
FIN_TEST="NOK" #On repasse la variable FIN_TEST a FALSE
|
||||
POURCENT_EXT=($(/usr/sbin/smartctl -c "${DISKS[$i]}" | grep "% of test remaining"))
|
||||
if [ "${POURCENT_RESTANT[$i]}" != "$POURCENT_EXT" ]; then
|
||||
POURCENT_RESTANT[$i]="$POURCENT_EXT"
|
||||
AVANCEMENT[$i]="$TEMPS : $POURCENT_RESTANT du selftest restant sur le disque ${MODEL[@]} (${DISKS[$i]})."
|
||||
ECRIRE="TRUE" #On écrit seulement si changement sur au moins un disque
|
||||
fi
|
||||
else
|
||||
AVANCEMENT[$i]="$TEMPS : selftest terminé sur le disque ${MODEL[@]} (${DISKS[$i]})."
|
||||
fi
|
||||
done
|
||||
while [ "$FIN_TEST" = "NOK" ] #On boucle tant qu au moins un disque n a pas fini son selftest
|
||||
do
|
||||
ECRIRE="FALSE"
|
||||
FIN_TEST="OK"
|
||||
TEMPS=($(date +"%T"))
|
||||
|
||||
for i in "${!DISKS[@]}"
|
||||
do
|
||||
MODEL=($(/usr/sbin/smartctl -i ${DISKS[$i]} | grep "Device Model:" | sed "s/Device Model: //g"))
|
||||
if /usr/sbin/smartctl -c "${DISKS[$i]}" | grep "Self-test routine in progress" > /dev/null 2>&1; then #Si scan non fini
|
||||
FIN_TEST="NOK" #On repasse la variable FIN_TEST a FALSE
|
||||
POURCENT_EXT=($(/usr/sbin/smartctl -c "${DISKS[$i]}" | grep "% of test remaining"))
|
||||
if [ "${POURCENT_RESTANT[$i]}" != "$POURCENT_EXT" ]; then
|
||||
POURCENT_RESTANT[$i]="$POURCENT_EXT"
|
||||
AVANCEMENT[$i]="$TEMPS : $POURCENT_RESTANT du selftest restant sur le disque ${MODEL[@]} (${DISKS[$i]})."
|
||||
ECRIRE="TRUE" #On écrit seulement si changement sur au moins un disque
|
||||
fi
|
||||
else
|
||||
AVANCEMENT[$i]="$TEMPS : selftest terminé sur le disque ${MODEL[@]} (${DISKS[$i]})."
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
if [ "$RUNNING_FROM_CRON" == "0" ]; then
|
||||
if [ "$ECRIRE" == "TRUE" ];then
|
||||
echo ""
|
||||
for i in "${!DISKS[@]}"
|
||||
|
@ -119,9 +122,12 @@ if [ "$RUNNING_FROM_CRON" == "0" ]; then
|
|||
echo "${AVANCEMENT[$i]}"
|
||||
done
|
||||
fi
|
||||
sleep 5s #On attend pour relancer la boucle de test de statut
|
||||
done
|
||||
|
||||
fi
|
||||
|
||||
sleep 5s #On attend pour relancer la boucle de test de statut
|
||||
done
|
||||
|
||||
if [ "$RUNNING_FROM_CRON" == "0" ]; then
|
||||
echo ""
|
||||
for i in "${!DISKS[@]}" #Une fois qu'on est sur la fin du test pour l'ensemble des disques
|
||||
do
|
||||
|
@ -135,22 +141,22 @@ if [ "$RUNNING_FROM_CRON" == "0" ]; then
|
|||
echo "**************************************************"
|
||||
echo ""
|
||||
echo "Le test de l'ensemble des disques a pris $TEMPS_MAX minutes."
|
||||
read
|
||||
fi
|
||||
|
||||
date > $LOG #RAZ fichier de sortie + inscription date
|
||||
|
||||
for i in "${DISKS[@]}" #Boucle d inscription des résultats dans le fichier de sortie
|
||||
do
|
||||
echo "----------------------------------------------------------------" >> $LOG
|
||||
echo "DISK "$i"" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Model Family" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Device Model" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Serial Number" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Firmware" >> $LOG
|
||||
echo " " >> $LOG
|
||||
/usr/sbin/smartctl -H -A -l selftest "$i" >> $LOG
|
||||
echo " " >> $LOG
|
||||
echo "----------------------------------------------------------------" >> $LOG
|
||||
echo "DISK "$i"" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Model Family" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Device Model" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Serial Number" >> $LOG
|
||||
/usr/sbin/smartctl -i "$i" | grep "Firmware" >> $LOG
|
||||
echo " " >> $LOG
|
||||
/usr/sbin/smartctl -H -A -l selftest "$i" >> $LOG
|
||||
echo " " >> $LOG
|
||||
done
|
||||
if [ "$RUNNING_FROM_CRON" == "1" ]; then
|
||||
cat $LOG | /usr/bin/mailx -s "Sante des disques sur $HOSTNAME" root@$HOSTNAME #envoi de mail
|
||||
fi
|
||||
fi
|
Loading…
Reference in New Issue