Cómo ejecutar Applescript en montaje en disco

Quiero ejecutar un Applescript cuando monto un disco específico. No es si el script está ubicado en el disco o no, solo debería ejecutarse cuando OS X monta el disco.

Traté de lograr esto con acciones de carpeta, pero parece que no es posible hacerlo de esta manera.

Aclaración:

  1. llego a casa con mi macbook
  2. Conecto mi concentrador USB en el dispositivo
  3. Los discos externos están montados en OS X
  4. Mi Applescript se ejecuta, hace algunas cosas en esos discos

Quiero automatizar el paso 4.

Respuestas (6)

No menciona en qué contexto está montando el disco, pero ¿qué hay de ir al otro lado y montar el disco con Applescript?

Menciono el contexto porque al montar un disco con Applescript es la gran advertencia de que si es un volumen de red, y la red está protegida con contraseña, entonces el nombre de usuario y la contraseña tendrían que almacenarse como texto sin formato en el script para una perfecta ejecución.

ACTUALIZACIÓN: Un poco de búsqueda encontró una pregunta similar en otro lugar. Esencialmente, se puede crear una secuencia de comandos para hacer esto aplicando la secuencia de comandos como una acción de carpeta a /Volumes:

on adding folder items to this_folder after receiving these_items
    repeat with aItem in these_items
        tell application "Finder"
            if (local volume of aItem) and (name of aItem is "[Name of Hard Drive]") then
                -- do something with the drive
                -- eject aItem
            end if
        end tell
    end repeat
end adding folder items to
No quiero montar un disco con AS, quiero ejecutar un AS cuando se monta un disco. Editaré mi publicación para que quede más claro.
Entendí la pregunta, pero no creo que sea posible hacer esto muy fácilmente. Sin embargo, lo hice un poco y encontré algo que debería funcionar con un poco de ajuste para satisfacer sus necesidades.
Hice algunas pequeñas modificaciones al guión. Funciona bien :)

La solución probablemente más robusta es crear un launchdtrabajo con la StartOnMountpropiedad establecida en -boolean YES:

StartOnMount <boolean>
Esta clave opcional hace que el trabajo se inicie cada vez que se monta un sistema de archivos.

Así lo hace Time Machine (ver /System/Library/LaunchDaemons/com.apple.backupd-attach.plist).

Siento que esta es la solución más robusta, ya que depende solo de launchd, que es donde reside "este tipo de cosas".

Use una acción de carpeta del Finder que monitoree /Volumes. Cuando aparece una nueva carpeta, eso significa que se ha adjuntado un nuevo disco. Ahora su FolderAction puede ejecutar una acción de Automator, AppleScript o script de shell para hacer lo suyo.

MarcoPolo puede realizar acciones basadas en la conexión del disco.

Esta aplicación tiene descuento, por ahora debe usar la bifurcación mantenida: controlplaneapp.com

Una solución sería crear una aplicación Automator encadenando las 3 acciones siguientes:

  • Obtener elementos de búsqueda especificados
  • Montar imagen de disco
  • Ejecutar AppleScript
Nuevamente, no quiero montar una imagen o un disco con Applescript, quiero ejecutar un script cuando se monta un disco. No puedo encontrar una manera de lograr eso con tus pasos.
Sí, veo después de la aclaración que no funciona porque es el disco duro lo que está montando (y no el disco de imagen).
Como su respuesta aborda una pregunta diferente a la que se le pregunta, debe considerar eliminarla.

Dependiendo de sus necesidades, esto se puede aplicar a carpetas/puntos de montaje específicos y es ideal para usar al montar una unidad flash USB, por ejemplo...

http://www.jbmurphy.com/2011/07/15/os-x-running-a-script-when-a-usb-drive-is-inserted/