# Bash : Tester la connexion physique à un DD externe

**URL:** <https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 10:10 UTC](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778 "2016-02-21T22:10:19Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Mars 19, 2016, 8:16 UTC](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778/22 "2016-03-19T08:16:17Z")

</div>

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 😉

---

<div class="post-metadata">

**Author:** ![ripat](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@ripat](https://www.debian-fr.org/u/ripat)\
**Post date:** [Mars 19, 2016, 1:55 UTC](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778/23 "2016-03-19T13:55:32Z")

</div>

> [@PengouinPdt](#):
>
> 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 «&nbsp;reste&nbsp;» - heureusement, c’est assez rare.

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:

```auto
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.

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Mars 19, 2016, 3:52 UTC](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778/24 "2016-03-19T15:52:28Z")

</div>

> [@ripat](#):
>
> 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=«&nbsp;/mnt/point/de/montage&nbsp;»  
> [$(stat -c%d «&nbsp;$MY\_MNT&nbsp;») -eq $(stat -c%d «&nbsp;$MY\_MNT/..&nbsp;»)]

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 ‹&nbsp;stat -c%d «&nbsp;$MY\_MNT/..&nbsp;»&nbsp;›, 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 «&nbsp;parent&nbsp;», 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 «&nbsp;%d&nbsp;» /repertoire/** … 😉

---

<div class="post-metadata">

**Author:** ![ripat](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/bc79bd/32.png) [@ripat](https://www.debian-fr.org/u/ripat)\
**Post date:** [Mars 19, 2016, 8:31 UTC](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778/25 "2016-03-19T20:31:09Z")

</div>

> [@PengouinPdt](#):
>
> Au fait, en passant, un puriste écrira : stat -c «&nbsp;%d&nbsp;» /repertoire/ …

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

[Page précédente](https://www.debian-fr.org/t/bash-tester-la-connexion-physique-a-un-dd-externe/67778.md?page=1)
