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