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)

Jeno
la source

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.

dessert
la source
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
pim
la source
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.

arryphe
la source
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.

user285259
la source