Mise en forme output.

This commit is contained in:
John Doe 2021-01-29 18:12:29 +01:00
parent a2e25fc91c
commit b0670b8c4d
1 changed files with 28 additions and 16 deletions

View File

@ -26,26 +26,22 @@ done
for i in "${DISKS[@]}" #Boucle de test sur chaque disque
do
ARRAY_TEMPS+=($(/usr/sbin/smartctl -c "$i" | grep "polling" | grep -Eo '\''[0-9]{1,}'\'')) #Extraction des temps de polling dans les capacites SMART du disque (seulement le chiffre, en minutes). Notez les caracteres d echappement
/usr/sbin/smartctl -t long "$i"
DUREE_TEST_VAN=($(/usr/sbin/smartctl -c "$i" | grep "polling" | grep -Eo '\''[0-9]{1,}'\'' | paste -sd '\'' '\'')) #Extraction des temps de polling dans les capacites SMART du disque (seulement le chiffre, en minutes).
DUREE_TEST=0
for j in "${DUREE_TEST_VAN[@]}"
do
if (("$j" > DUREE_TEST)); then
DUREE_TEST="$j"
fi
done
ARRAY_TEMPS+=$DUREE_TEST
/usr/sbin/smartctl -t long "$i" > /dev/null 2>&1
MODEL=($(smartctl -i /dev/sda | grep "Device Model:" | sed "s/Device Model: //g"))
echo "Le selftest pour le disque ${MODEL[@]} prendra $DUREE_TEST minutes."
done
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
FIN_TEST="OK"
for i in "${DISKS[@]}"
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
/usr/sbin/smartctl -c "$i" | grep "% of test remaining"
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
for i in "${ARRAY_TEMPS[@]}" #recherche de la valeur max dans les temps de polling extraits
do
if (("$i" > $TEMPS_MAX))
@ -53,6 +49,22 @@ do
fi
done
while [ "$FIN_TEST" = "NOK" ] #On boucle tant qu au moins un disque n a pas fini son selftest
do
FIN_TEST="OK"
for i in "${DISKS[@]}"
do
if /usr/sbin/smartctl -c "$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
TEMPS=($(date +"%T"))
POURCENTAGE_RESTANT=($(/usr/sbin/smartctl -c "$i" | grep "% of test remaining"))
echo "$TEMPS : $POURCENTAGE_RESTANT du selftest restant."
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
date > $LOG #RAZ fichier de sortie + inscription date
for i in "${DISKS[@]}" #Boucle d inscription des résultats dans le fichier de sortie