Changement listing des disques physiques

- Listing des disques derrière un RAID.
- Renommage de l'Array pour un nom plus parlant (OUTPUT -> DISKS) 
- Passage à un .bash
- Ajout d'un echo du temps pris par les test.
This commit is contained in:
John Doe 2021-01-28 18:52:41 +01:00
parent 75097a85cb
commit 129047c82f
1 changed files with 17 additions and 17 deletions

View File

@ -2,10 +2,10 @@
su -c'
OUTPUT=($(lsblk -dpno name)) #Listing des disques présents sur la machine sous la forme /dev/sd* dans un array
#ARRAY_TEMPS=() #Creation d un array vide
DISKS=($(lsscsi -g | grep "disk" | grep -v "Virtual Disk" | grep -o "/dev/sg[0123456789]" | paste -sd '\'' '\'')) #Liste des disques non virtuels
ARRAY_TEMPS=() #Creation d un array vide pour temps de selftest
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
PACKAGES=(lsscsi smartmontools mailutils) #Liste des paquets necessaires
FIN_TEST="NOK"
for i in "${PACKAGES[@]}" #Verification et installation des paquets necessaires
@ -16,18 +16,18 @@ do
fi
done
for i in "${OUTPUT[@]}" #Boucle de test sur chaque disque
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 echappemen$
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 echappemen$
/usr/sbin/smartctl -t long "$i"
done
#TEMPS_MAX=0 #RAZ du temps de polling
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 "${OUTPUT[@]}"
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
@ -37,18 +37,16 @@ do
done
done
#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 "${ARRAY_TEMPS[@]}" #recherche de la valeur max dans les temps de polling extraits
do
if (("$i" > $TEMPS_MAX))
then TEMPS_MAX="$i"
fi
done
date > $LOG #RAZ fichier de sortie + inscription date
for i in "${OUTPUT[@]}" #Boucle d inscription des résultats dans le fichier de sortie
for i in "${DISKS[@]}" #Boucle d inscription des résultats dans le fichier de sortie
do
echo "----------------------------------------------------------------" >> $LOG
echo "DISK "$i"" >> $LOG
@ -66,5 +64,7 @@ echo "**************************************************
************ $LOG *************
**************************************************"
echo "Le test de l'\''ensemble des disques a pris $TEMPS_MAX minutes."
cat $LOG | /usr/bin/mailx -s "Sante des disques sur $HOSTNAME" $USER@$HOSTNAME #envoi de mail
read'
read'