Problème DOS/UNIX

This commit is contained in:
John Doe 2020-12-30 19:06:16 +01:00
parent c1f0d57ed4
commit fc41d98e19
1 changed files with 56 additions and 55 deletions

View File

@ -1,55 +1,56 @@
#!/bin/bash
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
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
for i in "${PACKAGES[@]}" #Verification et installation des paquets necessaires
do
if ! dpkg -s $i >/dev/null 2>&1; then
echo "Installation du paquet "$i""
apt install $i
fi
done
date > $LOG #RAZ fichier de sortie + inscription date
for i in "${OUTPUT[@]}" #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$
/usr/sbin/smartctl -t long "$i"
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
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
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
echo "**************************************************
***** TESTS TERMINES ET LOG DISPONIBLE SOUS *****
************ $LOG *************
**************************************************"
cat $LOG | /usr/bin/mailx -s "Sante des disques sur $HOSTNAME" $USER@$HOSTNAME #envoi de mail
read'
#!/bin/bash
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
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
for i in "${PACKAGES[@]}" #Verification et installation des paquets necessaires
do
if ! dpkg -s $i >/dev/null 2>&1; then
echo "Installation du paquet "$i""
apt install $i
fi
done
date > $LOG #RAZ fichier de sortie + inscription date
for i in "${OUTPUT[@]}" #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$
/usr/sbin/smartctl -t long "$i"
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
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
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
echo "**************************************************
***** TESTS TERMINES ET LOG DISPONIBLE SOUS *****
************ $LOG *************
**************************************************"
cat $LOG | /usr/bin/mailx -s "Sante des disques sur $HOSTNAME" $USER@$HOSTNAME #envoi de mail
read'