Comment vérifier via la commande Shell si un disque externe spécifique est connecté? (par étiquette ou identifiant d'appareil)
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.
/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:
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
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.
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
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.