Überprüfen Sie, ob eine bestimmte externe Festplatte angeschlossen ist


9

Wie kann ich per Shell-Befehl prüfen, ob eine bestimmte externe Festplatte angeschlossen ist? (nach Etikett oder Geräte-ID)

Antworten:


9

Um zu testen, ob ein bestimmtes Gerät angeschlossen ist, können Sie grepmit der -qOption die Ausgabe von lsusboder durchsuchen lsblk, z

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

oder mit if:

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

Beide können verwendet werden, unabhängig davon, ob das Gerät montiert ist.


Für montierte Trennwände - lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no.
N0rbert

Natürlich habe ich die UUID verwendet, die Sie angegeben haben :)
N0rbert

9

/dev/disk/enthält die folgenden Verzeichnisse, die eine symbolische Verknüpfung zu realen Geräten enthalten. Diese Links werden dynamisch erstellt und entfernt von udev, sodass sie immer auf dem neuesten Stand sind:

  • by-id
  • by-partlabel
  • by-partuuid
  • Nebenweg
  • by-uuid

Wenn Sie also nach dem Vorhandensein des Symlinks suchen, werden weniger Ressourcen benötigt.

Hier ist ein Beispiel zum Testen des Vorhandenseins einer Festplatte anhand ihrer Seriennummer:

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

In meinem Sicherungsskript überprüfe ich nicht einmal die Festplattenpräsenz, sondern nur das Ergebnis des mountBefehls wie folgt:

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

2

lsusb Zum Auflisten des angeschlossenen USB-Geräts, wenn Ihre externe Festplatte über eine USB-Schnittstelle angeschlossen ist.

lsblk -f zum Auflisten von Blockgeräten, UUIDs und deren Einhängepunkten, da Ihre externe Festplatte ein Blockgerät ist.


1
@ N0rbert warum musst du Mountpunkte auflisten -f? Die Standardausgabe listet sie trotzdem auf
muru

0

findfsist dafür gemacht. Sie können suchen nach:

  • FS-Label

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

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

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

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

Bei der Suche wird zwischen Groß- und Kleinschreibung unterschieden. Wenn mehrere Partitionen übereinstimmen, wird nur die letzte angezeigt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.