Bash : Tester la connexion physique à un DD externe

C’est pourquoi je ne test que la présence du répertoire dans lequel il doit être monté …

Parce que s’il n’est pas connecté, le répertoire ne devrait pas exister. - oui, il peut arriver des erreurs de démontage ou d’écriture système qui font que, précédemment, le répertoire “reste” - heureusement, c’est assez rare.
S’il est monté, il peut ne pas être “redirigé” vers ce répertoire en question
S’il est monté correctement, il sera redirigé vers ce répertoire en question, donc la synchro pourra s’effectuer …

Après oui, on pourrait vérifier la présence avec un 'mount | grep '…
Personnellement, je trouve que vous vous compliquez beaucoup les choses - mais, si ça fonctionne tant mieux :wink:

C’est effectivement souvent suffisant, mais, comme tu le dis, pas toujours. Pour les puristes qui consulteront ce fil, la bonne manière de vérifier si un point de montage est monté est de vérifier avec un stat -c%d les numéros de périphérique du point de montage et de sa racine. S’ils sont différents, c’est monté, sinon pas.

Exemple:

MY_MNT="/mnt/point/de/montage" [ $(stat -c%d "$MY_MNT") -eq $(stat -c%d "$MY_MNT/..") ] && echo "pas monté" || echo "monté"

Personnellement j’utilise un grep sur /etc/mtab tout en sachant que ce n’est pas aussi robuste que le stat -c%d

De toutes les façons, le test sur le code de retour de la commande mount ne donne aucune indication sur le fait qu’un point est monté ou pas. Je répète qu’il peut renvoyer autre chose que 0 pour un mont parfaitement fonctionnel.

Sur le coup, je ne comprenais pas … puis j’ai testé !
Et, c’est normal qu’il soit différent puisque, quand tu fais appel à la deuxième écriture, soit ‘stat -c%d “$MY_MNT/…”’, tu appelles en fait le répertoire racine, précédent, - le répertoire parent auquel il est affilié - de ton répertoire monté !

Hors, pour pouvoir interroger le répertoire dit “parent”, il faut que le répertoire en question, soit monté, sinon, il ne peut interroger le parent de quelque chose qui n’existe pas !
Donc, s’il n’existe pas, il ne peut y avoir qu’équivalence, puisqu’en fait, on interroge le même parent …


Au fait, en passant, un puriste écrira : stat -c “%d” /repertoire/:wink:

Pas d’espace dans le format. Il n’est donc pas nécessaire de le protéger par des doubles quotes.