web-dev-qa-db-fra.com

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

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

9
Jeno

Pour vérifier si un périphérique spécifique est connecté, vous pouvez utiliser grep avec l'option -q pour rechercher dans la sortie de lsusb ou 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 le périphérique soit monté ou non.

9
dessert

/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:

  • par-id
  • par-partlabel
  • par partuuid
  • par chemin
  • par-uuid

Donc, vérifier l'existence du lien symbolique utilisera moins de ressources.

Voici un exemple de test de 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 ne vérifie que le résultat de la commande mount comme ceci:

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

lsusb pour répertorier le périphérique USB connecté si votre disque externe est connecté via une interface USB.

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

2
arryph

findfs est fait pour cela. 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
    
  • GPT uuid

    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.

0
user285259