5 votos

Ejecutar la acción cuando el dispositivo está desconectado

Estoy usando un launchd agente para ejecutar una secuencia de comandos de shell cada vez que conecto mi dock thunderbolt. He sido capaz de utilizar IOKit notificaciones para detectar cuando el muelle se adjunta, pero también quiero ejecutar un script de shell cada vez que el muelle se va a separar.

Para detectar la fijación del muelle utilizo com.apple.iokit.matching's device-attach evento:

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

No debe ser un evento que se dispara en desprendo, aunque no he encariñado con ella todavía. La documentación de apple sobre este tema es deplorable.

Realmente quiero evitar el uso de un método de votación que sigue comprobando si el dispositivo está conectado. Algunos mejores que las soluciones deben

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

Editar:

Para ser claros. Quiero ejecutar un script de shell cada vez que este dock se conecta o desconecta, no siempre cualquier dispositivo que se encuentre conectado/desconectado.

1voto

Vladimir Puntos 279

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

EDIT: Después de releer la pregunta, veo que mi respuesta era en realidad fuera de tema.

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

Tengo una solución para lo que te gustaría hacer. De hecho, es muy simple, pero sería difícil para mí explicar por escrito lo que he grabado un vídeo para usted.

Desencadenar una USB evento con Apple Automator de aplicación

:)

PS. En el video hablo acerca de UBS de dispositivos, ya que no me di cuenta de que quería trabajar para Thunderbolt. Pero estoy bastante seguro de que la solución seguirá funcionando igual de bien para Thunderbolt. :)

0voto

Vladimir Puntos 279

Cuando yo estaba buscando una cosa parecida a mí mismo antes, he oído acerca de un poco desordenado solución que se ejecute el código cada vez que un dispositivo es "Expulsado."

Lo que hice fue buscar el OSX programa que normalmente realiza un USB de Expulsión de la operación, y le cambió el nombre a algo como Eject_old. Entonces escribió su propio programa, que se ejecuta en primer lugar el código que desee y, a continuación, llama a la Eject_old programa.

Llamaron a este nuevo programa lo que el otro fue llamado, así que ahora cada vez que expulsar un dispositivo que se ejecuta su programa en primer lugar. Por supuesto, esto probablemente no va a ayudar si su base está desconectado sin ser expulsado en primer lugar.

Si usted piensa que esto podría ser capaz de ayudar con lo que te gustaría hacer, que me haga saber y yo pueda verse en él un poco más.

:)

PS. Hay aplicaciones de terceros que hacer algunas cosas similares. Tal vez usted puede contactar con ellos directamente y preguntar cómo sus programas de trabajo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X