Comment exécuter Applescript sur un montage sur disque

11

Je veux exécuter un Applescript lorsque je monte un disque spécifique. Ce n'est pas si le script se trouve sur le disque ou non, il devrait simplement s'exécuter lorsque OS X monte le disque.

J'ai essayé d'accomplir cela avec des actions de dossier, mais il semble qu'il ne soit pas possible de le faire de cette façon.

Clarification:

  1. Je rentre chez moi avec mon Macbook
  2. Je branche mon hub USB sur l'appareil
  3. Les disques externes sont montés sous OS X
  4. Mon Applescript s'exécute, fait des trucs sur ces disques

Je souhaite automatiser l'étape 4.

jsadfeew
la source

Réponses:

4

Vous ne mentionnez pas dans quel contexte vous montez le disque, mais qu'en est-il de l'inverse et de monter le disque avec Applescript?

Je mentionne le contexte parce que lors du montage d'un disque avec Applescript est la grande mise en garde que s'il s'agit d'un volume réseau et que le réseau est protégé par mot de passe, le nom d'utilisateur et le mot de passe devraient être stockés en texte brut dans le script pour une transparence exécution.

MISE À JOUR: Un peu de recherche a trouvé une question similaire ailleurs. Essentiellement, un script peut être créé pour ce faire en appliquant le script en tant qu'action de dossier à / 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
la source
Je ne veux pas monter un disque avec AS, je veux exécuter un AS quand un disque est monté. Je vais modifier mon message pour le rendre plus clair.
jsadfeew
J'ai compris la question, mais je ne pense pas qu'il soit possible de le faire très facilement. J'ai cependant travaillé un peu et trouvé quelque chose qui devrait fonctionner avec un peu de peaufinage pour répondre à vos besoins.
Philip Regan
J'ai apporté quelques petites modifications au script. Fonctionne bien :)
jsadfeew
12

La solution probablement la plus robuste consiste à créer un launchdtravail avec la StartOnMountpropriété définie sur -boolean YES:

StartOnMount <boolean>
Cette clé facultative entraîne le démarrage du travail chaque fois qu'un système de fichiers est monté.

C'est ainsi que Time Machine le fait (voir /System/Library/LaunchDaemons/com.apple.backupd-attach.plist).

Daniel Beck
la source
J'ai l'impression que c'est la solution la plus robuste, car elle ne dépend que de launchd, où réside "ce genre de chose".
Matt
2

Utilisez un Finder FolderAction qui surveille / Volumes. Lorsqu'un nouveau dossier apparaît, cela signifie qu'un nouveau disque a été attaché. Désormais, votre FolderAction peut exécuter une action Automator, AppleScript ou un script shell pour faire votre travail.


la source
1

MarcoPolo peut effectuer des actions basées sur l'attachement du disque.


la source
Cette application est actualisée, pour l'instant devrait utiliser une fourchette maintenue: controlplaneapp.com
Даниил Пронин
0

Une solution serait de créer une application Automator chaînant les 3 actions suivantes:

  • Obtenir des éléments du Finder spécifiés
  • Monter l'image disque
  • Exécutez AppleScript
kraymer
la source
1
Encore une fois, je ne veux pas monter une image ou un disque avec Applescript, je veux exécuter un script lorsqu'un disque est monté. Je ne peux pas trouver un moyen d'accomplir cela avec vos pas.
jsadfeew
Oui, je vois après clarification que cela ne fonctionne pas parce que c'est le disque dur que vous montez (et non le disque image).
kraymer
Comme votre réponse répond à une question différente de celle qui est posée, vous devriez envisager de la supprimer.
DanielSmedegaardBuus