¿Cómo enumerar TODOS los dispositivos HDD conectados de forma compatible con scripts?

¿Cómo enumerar TODOS los dispositivos HDD conectados de forma compatible con scripts?

¿Cómo enumerar TODOS los dispositivos HDD conectados de forma compatible con scripts? Todo: significa tanto montado como no montado. Compatible con scripts: significa algo que puedo usar para (u)montar en mi script de shell con un mínimo de grep o sed.

Mi tarea es escribir un script que al iniciarlo determine dónde está el disco duro (si es que está conectado) y lo monte. En mi script necesito alguna forma de obtener una lista de dispositivos disponibles en/dev. ¿Qué herramienta debo utilizar en mi script?

Aquí hay opciones que consideré:

  • fdisk -l proporciona mucha más información de la que necesito; es un poco difícil analizar su salida en Shell
  • parted -l no enumera las particiones no montadas y también muestra mucha información adicional
  • cat /proc/partitions mejor resultado pero no enumera las particiones no montadas

¿Qué herramienta se adapta mejor a mi tarea?

Para aclarar un poco de dónde vengo, aquí está mi situación:

En algunas PC, el usuario conectará algún disco duro a través de USB o SATA. Luego el usuario reinicia la PC. No sé nada sobre el dispositivo HDD, sólo puedo suponer que tiene una partición con el sistema de archivos ext4. El dispositivo podría aparecer como /dev/sda o /dev/sdb. Tengo acceso al dispositivo y puedo agregar mi script a /etc/rc.local o en cualquier otro lugar, pero tengo este acceso solo antes de entregar la PC al usuario.

Respuesta1

Quizás blkidlo que da líneas de la forma:

/dev/sdXX: UUID="<UUID>" TYPE="<fstype>"

También puede utilizar esos UUID en fstab: UUID="<UUID>"puede reemplazar la ruta del dispositivo /dev/sdXX.

Respuesta2

En distribuciones que tienen udisks

 udisks --enumerate-device-files | grep -v ^/dev/disk

información relacionada