Executa script quando um disco / cartão de memória específico é montado sob OSX

3

Como executo um script quando uma unidade é montada no OSX?

Meu exemplo é que eu gostaria de copiar automaticamente as imagens da minha memória USB / disco rígido quando ele está inserido no meu leitor de cartão USB e, quando um DVD ou CD é inserido, gostaria de copiá-lo para armazenamento em meu media center .

Eu tentei usar o Marco Polo (como mencionado em esta questão relacionada ) mas pelo que eu posso ver, só é possível detectar a presença de um determinado dispositivo USB, não a presença de um disco rígido específico.

    
por Max Rydahl Andersen 17.04.2010 / 21:02

1 resposta

3

Você pode escrever um daemon de ativação do usuário que é executado quando um sistema de arquivos é montado. O tópico aqui link deve ajudar você a começar.

Você precisará escrever um plad launchd que execute um script quando qualquer sistema de arquivos estiver montado. Seu script deve verificar se o volume em que você está interessado foi montado e, em seguida, fazer o que for necessário.

Você precisa disso para ser executado como root ou como usuário? Isso determinará se seu plist vai para / Library / LaunchDaemons ou ~ / Library / LaunchDaemons. Se este último, ele só será executado quando o usuário estiver logado.

UPDATE - emmby apontou que a URL não é mais válida. Em resumo, você precisa usar a chave StartOnMount no seu daemon de inicialização. Por exemplo (copiado de link ):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>net.stuff-things.backup-to-dropbox</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Users/spike/bin/backup-to-dropbox</string>
    </array>
    <key>StartOnMount</key>
    <true/>
  </dict>
</plist>
    
por 18.04.2010 / 00:28