Identifizieren Sie angeschlossene externe Festplatten programmgesteuert

Ich möchte ein Shell-Skript schreiben, das alle derzeit angeschlossenen externen Laufwerke (entweder USB- oder Firewire-Laufwerke) auswirft. Ich kann verwenden, disktuil eject <disk-path>um ein bestimmtes Laufwerk auszuwerfen. Aber ich kann immer noch nicht herausfinden, was die externen Laufwerke sind. Zeigt beispielsweise /Volumesinterne Laufwerke, externe Laufwerke und bereitgestellte Images an. Gibt es eine Möglichkeit, nur externe Laufwerke programmgesteuert zu identifizieren?

Antworten (2)

Haben Sie darüber nachgedacht, die zu verwenden diskutil info /dev/disk[n|s{n}] | grep Ejectable, mit der Sie feststellen können, ob das Gerät (oder der Geräte-Slice) auswerfbar ist?

Dies müsste in einem Skript erweitert werden, das verwendet wird, awkum jedes derzeit angeschlossene Festplattengerät zu bearbeiten, um festzustellen, ob es ausgeworfen werden kann, und es dann auszuwerfen.

diskutil infoist genau das, was ich brauche. Ich kann nur verwenden, grepum ein "Ja" in der Zeile "Ejectable" zu bestimmen. Hier ist mein Skript, da es für andere nützlich sein könnte: gist.github.com/1077064

In einem Terminalfenster (Bash-Shell)

diskutil info /Volumes/Name-des-Volumes

gibt eine Liste der Eigenschaften des Volumes zurück, einschließlich

Protokoll: FireWire ... Auswerfbar: Ja Ganz: Nein Intern: Nein

Also, ich nehme an, Sie könnten damit anfangen. Mir ist nicht klar, was die Eigenschaft "Internal" bedeutet. Es ist möglicherweise besser, sich "Protocol" anzusehen, wenn Sie sich mit externen Firewire- oder USB-Geräten befassen.