• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Skript welches eine Disk anhand des Namens auswirft?

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Hallo zusammen,

ich habe mir eine App mit Automator gebaut, die per Skript "diskutil eject /dev/disk0" eine Platte auswirft. Jetzt habe ich aber eine interne, zwei Firewire und eine USB Platte. Und dadurch scheint nicht nach jedem Boot, die Platte die ich auswerfen möchte, auch die gleiche Disk zu sein. Manchmal ist sie Disk0, manchmal aber auch Disk3. Kann ich irgendwie mittels der Bezeichnung die Disk heraus bekommen und diese dann auswerfen?

Ich würde das gerne mit SleepWatcher automatisieren. Dass meine interne Disk vom iMac nach jedem Boot/Aufwachen ausgeworfen wird. Das mit dem automatischen Skriptaufruf habe ich auch noch nicht hinbekommen. Aber jetzt sollten wir erstmal das andere Problem klären.

Danke
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Tip:
Code:
diskutil info disk0 | egrep -w "Media Name"\|"Total Size"
 

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Das mit eject habe ich jetzt versucht mittels

Code:
diskutil eject /Volumes/Macintosh\ HD

Das funktioniert auch solange das Volume gemountet ist. Allerdings dann nicht mehr, wenn es schonmal ausgeworfen wurde. Nach dem Standby läuft es wieder an. Kann auch mittels eject /dev/DiskX wieder abgeschaltet werden. Aber über die Volumen funktioniert es nicht.

@Rastafari: Kannst Du Deinen Tipp noch etwas für die ganz Dummen ausschmücken?

Danke
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.522
Rastas Code gibt dir den Namen der Platte 0 aus, wenn du für die 0 eine andere Zahl einsetzt, entsprechend für die externen - nicht den, den du vergeben hast, sondern eine dauerhafte interne Identifikationsbezeichnung.
Dieser Name ändert sich ja nicht, also kannst du ihn in dein Skript einsetzen.
Bist du sicher, daß deine interne Platte unter unterschiedlichen dev/disk-Nummern erscheint? Ich hätte jetzt angenommen, daß das Startvolume immer dev/disk0 ist. Oder benutzt du auch andere Volumes als Startvolume?
 

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Danke Dir Rastafari :) Ein bisschen Google hilft wunder:

Code:
for i in 1 2 3 4
do
  diskutil info disk$i | egrep -w "WDC WD5000AAKS-402AA0 Media"
  if [ "$?" -eq "0" ]; then
    diskutil mountDisk /dev/disk$i
    diskutil eject /Volumes/Macintosh\ HD/
    exit 0
  fi
done

Damit prüfe ich alle Disks und wenn die entsprechende gefunden wurde, mounte ich sie wieder und werf sie dann aus. So funktioniert es. Und die Probleme mit SleepWatcher habe ich auch in den Griff bekommen. Jetzt fährt mein kleiner aus dem Ruhezustand hoch, startet auch die interne Platte und SleepWatcher wirft sie dann gleich wieder aus. Perfekt. DANKE!!!
 

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Rastas Code gibt dir den Namen der Platte 0 aus, wenn du für die 0 eine andere Zahl einsetzt, entsprechend für die externen - nicht den, den du vergeben hast, sondern eine dauerhafte interne Identifikationsbezeichnung.
Dieser Name ändert sich ja nicht, also kannst du ihn in dein Skript einsetzen.
Bist du sicher, daß deine interne Platte unter unterschiedlichen dev/disk-Nummern erscheint? Ich hätte jetzt angenommen, daß das Startvolume immer dev/disk0 ist. Oder benutzt du auch andere Volumes als Startvolume?

Nein ich verwende nur diese. Die ist aber am USB Bus (noch). Darum schätze ich, dass USB nicht so regelmäßig eingesetzt wird, wie FireWire.
 

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Hmmm, das war wohl schon reichlich spät heut Nacht :) da muss ich wohl nochmal ran...
 

thoniel

Golden Delicious
Registriert
31.12.09
Beiträge
11
Code:
tell application "Finder"
    set allVolumes to the name of every disk
    set disksToUnmount to {"Zeitkapsel", "externe"}
    repeat with i from 1 to the count of allVolumes
        if item i of allVolumes is not the name of the startup disk then
            if disksToUnmount contains item i of allVolumes then
                eject (item i of allVolumes)
            end if
        end if
    end repeat
end tell

ich mach das so. wollte halt auch keine fehler haben wenn eine der platten nicht gemountet ist.
ist jetzt applescript, sollte ja aber kein problem darstellen.
 

DeHub

Schafnase
Registriert
26.10.11
Beiträge
2.226
Das Projekt hat sich für mich erledigt. Heute kam mein 2,5" FireWire800/USB3.0 Gehäuse von Raidsonic für meine System SSD. In diesem Gehäuse ist die SSD noch langsamer als in meinem WD USB2.0 Gehäuse. Ich werde mir jetzt überlegen müssen ob ich eine SSD in den iMac einbauen lasse, oder gar warte bis die Garantie abgelaufen ist.

Trotzdem danke Euch allen für die Hilfe. Konnte trotzdem einiges lernen ;)