Re: smartctl

Startseite

Nachricht beantworten
Autor: anne.guilde@free.fr
Datum:  
To: guilde
Betreff: Re: smartctl
Le 04/06/2018 à 10:40, nt.guilde@??? a écrit :
>> smartctl donne l'ordre à smartd d'exécuter le test du disque dur si j'ai
>> bien compris ce que Christian a dit.
>> Donc tester $? ne sert pas à grand chose sauf s'il a pu ou pas envoyé la
>> demande de vérification du disque à smartd
>
>    On continue seulement si l'ordre a été bien transmis.

>
>>> end="$(echo "$a" | sed '/Test will complete after /!d; s///')"
>>> sleep $(( `date +%s -d "$end"` - `date +%s` + 60 ))
>
>    On récupère la ligne contenant l'heure de fin ; on calcule le nombre de
> secondes d'ici-là, + 60 comme marge ; on dort.

>
>> + 0
>> ./test-BorgUSB-sda-debian-1: 6: ./test-BorgUSB-sda-debian-1: 0: not found
>
>    Il doit y avoir une erreur à la ligne 6.

>
>> J'ai l'impression que smartctl est lancé 2 fois.
>
>    Tu vois deux fois le message parce que tu es en debug mode et à cause de
> "echo $a".

>


----
#!/bin/sh

set -x

a="$(smartctl -t short /dev/sda)"
(( $? )) && { # smartctl returned error         <= ligne 6
   echo ERROR : >&2
   echo "$a" >&2
   exit 1
}


end="$(echo "$a" | sed '/Test will complete after /!d; s///')"
sleep $(( `date +%s -d "end"` - `date +%s` + 60 ))
----

$? = 0

J'ai arrêté le disque.

----
# ./test-BorgUSB-sda-debian-1
+ smartctl -t short /dev/sdc
+ a=smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

Smartctl open device: /dev/sdc failed: No such device
+ 2
./test-BorgUSB-sda-debian-1: 6: ./test-BorgUSB-sda-debian-1: 2: not found
+ echo smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-6-amd64] (local
build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

Smartctl open device: /dev/sdc failed: No such device
+ sed /Test will complete after /!d; s///
+ end=
+ date +%s -d
+ date +%s
+ sleep -41407
sleep : option invalide -- '4'
Saisissez « sleep --help » pour plus d'informations.
----

$? = 2
Le résultat de la commande est 2 maintenant


Dans mon script BorgUSB.sh je teste si le disque est monté, donc je
n'aurais jamais ce cas de figure.

----
#sub pour monter le disque de sauvegarde et verifier qu'il est connecté
do_mount()
{
echo "on monte le disque"
# si le dossier pour monter existe pas on le cree
if [ ! -e $repertoire ]
then
mkdir $repertoire
fi

echo "repertoire $repertoire"

connected=$(blkid -U "$UUID")
echo "resultat de connected : $connected"
# si utilisation du LABEL modifier le script
# en replacant "UUID=" par "LABEL=" , "$UUID" par "$LABEL" et le switch
"-U" par "-L"

if [ -z "$connected" ] # pas connecté
    then
        echo "$UUID : pas connecté"
        echo "Backup debian: disque absent"| mail -s "$HOSTDOMAIN Backup 
debian: disque absent" $MAILADDR
        exit 1
    else #connecté
...
----


Je ne comprends pas pourquoi faire ce test
a="$(smartctl -t short /dev/sda)"
(( $? )) && { # smartctl returned error         <= ligne 6
   echo ERROR : >&2
   echo "$a" >&2
   exit 1
}


doit y avoir une erreur mais je ne vois pas

Anne