Ejecutar acción cuando el dispositivo está separado

Estoy usando un agente de launchd para ejecutar un script de shell cada vez que conecto mi Thunderbolt Dock. He podido utilizar IOKit notifications de IOKit para detectar cuándo se está conectando el dock, pero también quiero ejecutar un script de shell cada vez que se extrae el dock.

Para detectar el file adjunto del dock utilizo el evento de device-attach com.apple.iokit.matching :

  • Instalación de Windows7 en MacbookPro6,2 macOS Sierra
  • Actualizar el sistema operativo OS X desde la línea de command
  • Lion OS se instala para la nueva SSD. ¿Debo instalar Leopard primero?
  • Reparación de un encryption de almacenamiento básico de disco fallido
  • ¿Cómo configurar una pantalla externa como pantalla interna en Mac?
  • Fix localhost no puede proporcionar una connection segura
  •   <key>LaunchEvents</key> <dict> <key>com.apple.iokit.matching</key> <dict> <key>com.apple.device-attach</key> <dict> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>idVendor</key> <integer>21</integer> <key>idProduct</key> <integer>4</integer> <key>IOMatchStream</key> <true/> <key>IOMatchLaunchStream</key> <true/> </dict> </dict> </dict> 

    Debería haber un evento que se dispare en separarse también, aunque todavía no lo he disfrutado. La documentation de Apple sobre este tema es deplorable.

    Realmente quiero evitar el uso de un método de votación que siga comprobando si el dispositivo todavía está conectado. Algunas mejores soluciones deben

    También growl, ControlPlane y otras aplicaciones similares están fuera de cuestión.

    Editar:

    Para ser claro. Quiero ejecutar un script de shell cada vez que este dock específico esté conectado o desconectado, no siempre que se adjunte / desconecte algún dispositivo.

  • ¿Cómo configurar múltiples PATH en el usuario bash_profile en OSX 10.8?
  • ¿La configuration de iCloud Photo Library está en OS X en todo el dispositivo o por Photo Library local?
  • Cómo cambiar el nombre de un disco duro?
  • ¿Por qué el logging del kernel está vacío?
  • Comando "abrir" del terminal OS X y mantener el foco en la línea de command
  • Identificar el tipo de CD?
  • 2 Solutions collect form web for “Ejecutar acción cuando el dispositivo está separado”

    ////////////////////////////////////////////////// ////////////////////////////

    EDITAR: Al volver a leer la pregunta, veo que mi respuesta estaba fuera del tema.

    ////////////////////////////////////////////////// ////////////////////////////

    Tengo una solución para lo que te gustaría hacer. En realidad es muy simple, pero me resultaría difícil explicarlo por escrito, así que grabé un video para ti.

    Dispara un evento USB usando la aplicación Automator de Apple

    🙂

    PD. En el video hablo de dispositivos UBS porque no me di count de que querías que esto funcionara para Thunderbolt. Pero estoy bastante seguro de que la solución seguirá funcionando igual de bien para Thunderbolt. 🙂

    Cuando estaba buscando algo similar antes, escuché acerca de una solución algo desorderada que ejecutará su código cada vez que un dispositivo sea "Expulsado".

    Lo que hicieron fue encontrar el progtwig OSX que normalmente realiza una operación de expulsión de USB, y lo renombró a algo como Eject_old. Luego escribieron su propio progtwig, que primero ejecuta el código que desean y luego llama al progtwig Eject_old.

    Llamaron a este nuevo progtwig cualquiera que fuera el nombre del otro, por lo que ahora cada vez que expulsan un dispositivo, ejecuta primero su progtwig. Por supuesto, esto probablemente no ayude si su base de acoplamiento se desconecta sin ser expulsado primero.

    Si crees que esto puede ayudarte con lo que te gustaría hacer, házmelo saber y puedo investigarlo un poco más.

    🙂

    PD. Hay aplicaciones de terceros que hacen cosas similares. Tal vez pueda contactarlos directamente y preguntar cómo funcionan sus progtwigs.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).