Verifique se um disco externo específico está conectado

9

Como posso verificar através do comando shell se um disco externo específico está conectado? (por etiqueta ou código do dispositivo)

Jeno
fonte

Respostas:

9

Para testar se um dispositivo específico está conectado, você pode usar grepcom a -qopção de pesquisar a saída lsusbou lsblk, por exemplo,

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 com if:

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

Ambos podem ser usados, independentemente de o dispositivo estar montado.

sobremesa
fonte
Para divisórias montadas - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert #
Claro, eu usei UUID que você forneceu :)
N0rbert
9

/dev/disk/contém os seguintes diretórios, que contêm link simbólico para dispositivos reais. Esses links são criados e removidos dinamicamente por udev, portanto, eles estão sempre atualizados:

  • by-id
  • por partlabel
  • por partuuid
  • por caminho
  • by-uuid

Portanto, verificar a existência do link simbólico usará menos recursos.

Aqui está um exemplo testando a presença de um disco usando seu número de série:

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

No meu script de backup, eu nem checo a presença do disco, apenas o resultado do mountcomando, como este:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
pim
fonte
2

lsusb para listar o dispositivo USB conectado se o seu disco externo estiver conectado através da interface USB.

lsblk -f para listar dispositivos de bloco, UUIDs e seus pontos de montagem, pois seu disco externo é um dispositivo de bloco.

arryph
fonte
11
@ N0rbert Por que você precisa -flistar pontos de montagem? As listas de saída padrão los de qualquer maneira
Muru
0

findfsé feito para isso. Você pode pesquisar por:

  • Etiqueta FS

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

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

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

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

As pesquisas diferenciam maiúsculas de minúsculas. Se várias partições corresponderem, apenas a última será exibida.

user285259
fonte