Como executar o Applescript na montagem em disco

11

Quero executar um Applescript quando montar um disco específico. Não é se o script está localizado no disco ou não, ele deve ser executado apenas quando o OS X montar o disco.

Tentei fazer isso com ações de pasta, mas parece que não é possível fazer dessa maneira.

Esclarecimento:

  1. Chego em casa com meu Macbook
  2. Conecto meu hub USB ao dispositivo
  3. Discos externos são montados no OS X
  4. Meu Applescript é executado, faz algumas coisas nesses discos

Quero automatizar a etapa 4.

jsadfeew
fonte

Respostas:

4

Você não menciona em que contexto está montando o disco, mas e o contrário e montar o disco com o Applescript?

Menciono o contexto porque, ao montar um disco com o Applescript, é grande a ressalva de que, se for um volume de rede e a rede estiver protegida por senha, o nome do usuário e a senha teriam que ser armazenados como texto sem formatação no script para uma perfeita execução.

ATUALIZAÇÃO: Um pouco de pesquisa encontrou uma pergunta semelhante em outro lugar. Essencialmente, um script pode ser criado para isso, aplicando-o como uma Ação de Pasta em / 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
fonte
Não quero montar um disco com o AS, quero executá -lo quando um disco for montado. Vou editar minha postagem para torná-la mais clara.
jsadfeew
Eu entendi a pergunta, mas acho que não é possível fazer isso com muita facilidade. No entanto, trabalhei um pouco e encontrei algo que deveria funcionar com alguns ajustes para atender às suas necessidades.
Philip Regan
Fiz algumas pequenas modificações no script. Funciona bem :)
jsadfeew
12

A solução provavelmente mais robusta é criar um launchdtrabalho com a StartOnMountpropriedade configurada para -boolean YES:

StartOnMount <boolean>
Essa chave opcional faz com que o trabalho seja iniciado toda vez que um sistema de arquivos é montado.

É assim que o Time Machine faz isso (consulte /System/Library/LaunchDaemons/com.apple.backupd-attach.plist).

Daniel Beck
fonte
Eu sinto que essa é a solução mais robusta, pois depende apenas do launchd, que é onde "esse tipo de coisa" reside corretamente.
30512 Matt
2

Use uma ação de pasta do Finder que monitore / volumes. Quando uma nova pasta aparece, isso significa que um novo disco foi anexado. Agora, o FolderAction pode executar uma ação do Automator, AppleScript ou shell script para fazer o seu trabalho.


fonte
1

O MarcoPolo pode executar ações com base no anexo do disco.


fonte
Este aplicativo está com desconto, por enquanto deve usar o fork mantido: controlplaneapp.com
#
0

Uma solução seria criar um aplicativo Automator encadeando as três ações a seguir:

  • Obter itens do Finder especificados
  • Montar imagem de disco
  • Execute o AppleScript
kraymer
fonte
11
Novamente, não quero montar uma imagem ou um disco com o Applescript, quero executar um script quando um disco é montado. Não consigo encontrar uma maneira de conseguir isso com seus passos.
jsadfeew
Sim, vejo depois de esclarecimentos que não funciona porque é o disco rígido que você está montando (e não o disco de imagem).
kraymer
Como sua resposta aborda uma pergunta diferente da que é solicitada, você deve excluí-la.
DanielSmedegaardBuus