Réponses:
Pour tester si un appareil spécifique est connecté, vous pouvez utiliser grep
l' -q
option de rechercher 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 l'appareil 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:
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 mount
commande comme ceci:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
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.
-f
de lister les points de montage? La sortie par défaut les répertorie quand même
findfs
est 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
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.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.