Ejecutar acción cuando el dispositivo está desconectado

3

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

Para detectar el archivo adjunto del dock, uso el evento com.apple.iokit.matching 's device-attach :

 <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>

También debería haber un evento que se dispare al separarse, aunque todavía no lo he aceptado. La documentación de Apple sobre este tema es deplorable.

Realmente quiero evitar el uso de un método de sondeo que verifique si el dispositivo aún está conectado. Algunas soluciones mejores deben

También el gruñido, ControlPlane y otras aplicaciones similares están fuera de cuestión.

Editar:

Para ser claros. Quiero ejecutar un script de shell cada vez que este dock específico esté conectado o desconectado, no siempre que cualquier dispositivo esté conectado / desconectado.

    
pregunta romeovs 31.07.2014 - 19:25

2 respuestas

1

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

EDITAR: Al releer la pregunta, veo que mi respuesta fue realmente fuera de tema.

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

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

Activa un evento USB utilizando la aplicación Automator de Apple

:)

PS. En el video, hablo sobre dispositivos UBS porque no me di cuenta 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. :)

    
respondido por el Vladimir 03.08.2014 - 18:16
0

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

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

Llamaron a este nuevo programa como se llamaba al otro, así que ahora, cada vez que expulsan un dispositivo, primero ejecutan su programa. Por supuesto, esto probablemente no servirá de nada si su base se desconecta sin ser expulsado primero.

Si crees que esto podría ayudarte con lo que te gustaría hacer, avísame y puedo investigarlo un poco más.

:)

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

    
respondido por el Vladimir 03.08.2014 - 20:31

Lea otras preguntas en las etiquetas