• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> 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
 
Tip:
Code:
diskutil info disk0 | egrep -w "Media Name"\|"Total Size"
 
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
 
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?
 
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!!!
 
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.
 
Hmmm, das war wohl schon reichlich spät heut Nacht :) da muss ich wohl nochmal ran...
 
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.
 
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 ;)