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:
parent
75097a85cb
commit
129047c82f
|
@ -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'
|
Loading…
Reference in New Issue