2009-12-22 3 views
14

Je cherche un moyen d'obtenir le chemin .dmg d'une image disque montée avec juste son point de montage. Je veux écrire un service de recherche "simple" qui éjecte l'image disque et supprime le .dmg qui l'accompagne. L'éjection est triviale, mais je ne sais pas comment déterminer le chemin du .dmg, juste le point de montage.Récupère le chemin du .dmg à partir du point de montage

diskutil ne semble pas savoir ou ne le dit pas.

Pour un script, les suggestions AppleScript ou shell sont préférées.

+0

Je ne pense pas que vous obtiendrez une suggestion AppleScript ou basée sur un shell car vous devrez probablement parler au pilote, ou du moins à son agent utilisateur, pour cela. –

+0

Je pensais qu'il pourrait y avoir quelque chose comme hdiutil ou diskutil qui pourrait aider, ou peut-être une propriété Finder sur les images de disque monté. – wbg

Répondre

15

Utilisez hdiutil info pour obtenir des informations sur les images actuellement montées. Puis, , utilisez hdiutil detach /Mount/Point pour démonter tous les systèmes de fichiers et détacher l'image.

Vous devrez analyser la sortie de hdiutil info pour trouver le bon chemin d'image si plusieurs images sont montées. Il sera probablement plus robuste d'utiliser le format de sortie de plist hdiutil info -plist et exécuter cela dans, disons, un script python avec plistlib ou un AppleScript en utilisant le Property List Suite de System Events.

Voici un script python rapide et sale pour vous donner une idée. Il est facile d'explorer les options en utilisant l'interpréteur python:

>>> import plistlib 
>>> from subprocess import Popen, PIPE 
>>> output = Popen(["hdiutil", "info", "-plist"], stdout=PIPE).communicate()[0] 
>>> pl = plistlib.readPlistFromString(output) 
>>> for image in pl['images']: 
... for se in image['system-entities']: 
...  if se.get('mount-point') == '/Volumes/blah': 
...   print image['image-path'] 
/Path/To/blah.dmg 
+0

Cela ne m'aidera pas à jeter le .dmg. – wbg

+0

Désolé, raté ce point. Voir la mise à jour –

+0

Brillant! L'information de hdiutil est juste ce que je cherche! – wbg

3

Terminal de départ, faire:

$ cd /Volumes 
$ hdutil info 

L'emplacement des suspects fichiers DMG sera affiché sous l'image chemin

cd que emplacement, et faire:

$ ls filename 

Démonter le volume dans Finder, et enfin dans Terminal:

$ rm filename 

Bonne chance.

Questions connexes