Controllare se è collegato un disco esterno specifico


9

Come posso verificare tramite il comando shell se è collegato un disco esterno specifico? (per etichetta o ID dispositivo)

Risposte:


9

Per verificare se è collegato un dispositivo specifico, è possibile utilizzare grepl' -qopzione per cercare l'output di lsusbo lsblk, ad es

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

Entrambi possono essere utilizzati indipendentemente dal fatto che il dispositivo sia montato.


Per partizioni montate - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N.

Certo, ho usato l'UUID che hai fornito :)
N0rbert,

9

/dev/disk/contiene le seguenti directory, che contengono collegamenti simbolici a dispositivi reali. Questi collegamenti vengono creati e rimossi in modo dinamico da udev, quindi sono sempre aggiornati:

  • by-id
  • by-partlabel
  • by-partuuid
  • by-path
  • by-uuid

Quindi, verificando l'esistenza del collegamento simbolico, verranno utilizzate meno risorse.

Ecco un esempio che verifica la presenza di un disco usando il suo numero seriale:

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

Nel mio script di backup non controllo nemmeno la presenza del disco, controllo solo il risultato del mountcomando in questo modo:

mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1

2

lsusb per elencare il dispositivo USB collegato se il disco esterno è collegato tramite l'interfaccia USB.

lsblk -f per elencare i dispositivi a blocchi, gli UUID e i loro punti di montaggio poiché il disco esterno è un dispositivo a blocchi.


1
@ N0rbert perché devi -felencare i punti di montaggio? L'output predefinito li elenca comunque
muru

0

findfsè fatto per questo. Puoi cercare per:

  • Etichetta FS

    findfs LABEL="Ubuntu" &>/dev/null
    
  • Uuid

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

    findfs PARTLABEL="EFI system partition" &>/dev/null
    
  • GPU uuid

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

Le ricerche fanno distinzione tra maiuscole e minuscole. Se più partizioni corrispondono, viene visualizzata solo l'ultima.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.