Compruebe si hay un disco externo específico conectado

9

¿Cómo puedo verificar mediante un comando de shell si hay un disco externo específico conectado? (por etiqueta o identificación del dispositivo)

Jeno
fuente

Respuestas:

9

Para probar si un dispositivo específico está conectado, puede usar grepla -qopción para buscar la salida de , lsusbo lsblkpor ejemplo

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

o con if:

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

Ambos se pueden usar sin importar si el dispositivo está montado.

postre
fuente
Para tabiques montados - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert
Por supuesto, usé UUID que me proporcionaste :)
N0rbert
9

/dev/disk/contiene los siguientes directorios, que contienen enlaces simbólicos a dispositivos reales. Estos enlaces se crean y eliminan dinámicamente udev, por lo que siempre están actualizados:

  • por id
  • etiqueta parcial
  • por partuuido
  • camino
  • por-uuid

Por lo tanto, verificar la existencia del enlace simbólico utilizará menos recursos.

Aquí hay un ejemplo que prueba la presencia de un disco usando su número de serie:

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

En mi script de respaldo, incluso no verifico la presencia del disco, solo verifico el resultado del mountcomando de esta manera:

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

lsusb para enumerar el dispositivo usb conectado si su disco externo está conectado a través de la interfaz USB.

lsblk -f para enumerar dispositivos de bloque, UUID y sus puntos de montaje ya que su disco externo es un dispositivo de bloque.

Arryph
fuente
1
@ N0rbert ¿por qué necesita -fenumerar los puntos de montaje? La salida predeterminada los enumera de todos modos
muru
0

findfsestá hecho para esto. Puedes buscar 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
    
  • GPT uuid

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

Las búsquedas distinguen entre mayúsculas y minúsculas. Si coinciden varias particiones, solo se muestra la última.

usuario285259
fuente