Cómo ejecutar Applescript en montaje en disco

11

Quiero ejecutar un Applescript cuando monte un disco específico. No es si la secuencia de comandos se encuentra en el disco o no, solo debe 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 Hub USB al 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.

jsadfeew
fuente
posible duplicado de

Respuestas:

4

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

Menciono el contexto porque al montar un disco con Applescript es la gran advertencia de que si se trata de un volumen de red y la red está protegida con contraseña, entonces el nombre de usuario y la contraseña deberían 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 hacer un script para hacer esto aplicando el script 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
Philip Regan
fuente
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 clara.
jsadfeew
Entendí la pregunta, pero no creo que sea posible hacerlo con mucha facilidad. Sin embargo, trabajé un poco y encontré algo que debería funcionar con un poco de ajuste para satisfacer sus necesidades.
Philip Regan
Hice algunas pequeñas modificaciones al guión. Funciona bien :)
jsadfeew
12

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

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

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

Daniel Beck
fuente
Siento que esta es la solución más sólida, ya que depende solo de launchd, que es donde reside "este tipo de cosas" correctamente.
Matt
2

Use un Finder FolderAction que monitorea / Volúmenes. 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 un script de shell para hacer lo suyo.


fuente
1

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


fuente
Esta aplicación tiene descuento, por ahora debería usar tenedor mantenido: controlplaneapp.com
Даниил Пронин
0

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

  • Obtener elementos del buscador especificados
  • Montar imagen de disco
  • Ejecute AppleScript
kraymer
fuente
1
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.
jsadfeew
Sí, veo después de la aclaración que no funciona porque ese es el disco duro que está montando (y no el disco de imagen).
kraymer
Como su respuesta aborda una pregunta diferente a la que se le pide, debería considerar eliminarla.
DanielSmedegaardBuus