Vérifiez si un disque externe spécifique est connecté


9

Comment puis-je vérifier via la commande shell si un disque externe spécifique est connecté? (par étiquette ou identifiant d'appareil)

Réponses:


9

Pour tester si un appareil spécifique est connecté, vous pouvez utiliser grepl' -qoption de rechercher la sortie de lsusbou lsblk, par exemple

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no

devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no

ou avec if:

uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
  echo yes
else
  echo no
fi

Les deux peuvent être utilisés, que l'appareil soit monté ou non.


Pour les partitions montées - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert

Bien sûr, j'ai utilisé l'UUID que vous avez fourni :)
N0rbert

9

/dev/disk/contient les répertoires suivants, qui contiennent un lien symbolique vers des appareils réels. Ces liens sont créés et supprimés dynamiquement par udev, ils sont donc toujours à jour:

  • by-id
  • sous-étiquette
  • by-partuuid
  • par-chemin
  • by-uuid

Ainsi, la vérification de l'existence du lien symbolique utilisera moins de ressources.

Voici un exemple testant la présence d'un disque à l'aide de son numéro de série:

test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no

Dans mon script de sauvegarde, je ne vérifie même pas la présence du disque, je vérifie uniquement le résultat de la mountcommande comme ceci:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1

2

lsusb pour lister le périphérique USB connecté si votre disque externe est connecté via l'interface USB.

lsblk -f pour répertorier les périphériques de bloc, les UUID et leurs points de montage, car votre disque externe est un périphérique de bloc.


1
@ N0rbert pourquoi avez-vous besoin -fde lister les points de montage? La sortie par défaut les répertorie quand même
muru

0

findfsest fait pour ça. Vous pouvez rechercher par:

  • Étiquette FS

    findfs LABEL="Ubuntu" &>/dev/null
    
  • FS uuid

    findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
    
  • Étiquette GPT

    findfs PARTLABEL="EFI system partition" &>/dev/null
    
  • Uuid GPT

    findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
    

Les recherches sont sensibles à la casse. Si plusieurs partitions correspondent, seule la dernière est affichée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.