9 votos

Macbook Air/Pro: ¿ejecutar script al cerrar la tapa?

¿Cómo se puede configurar MacOS (10.8 o superior) para que llame automática e inmediatamente a un script designado por el usuario (probablemente un script de bash) cuando el usuario cierre la tapa de la pantalla de un Macbook Air o Pro?

Detalles.

Quiero hacer esto porque en algunos escenarios mi Macbook Air 2013 corriendo 10.8.5 no duerme/bloquea inmediatamente la pantalla al cerrar la tapa (posiblemente porque un cliente VPN está tratando de abrir una conexión). Como tal, quiero que el sistema para ejecutar inmediatamente un script que llama a este procedimiento de ahorro y bloqueo de pantalla al cerrar la tapa. Sin embargo, no sé cómo llamar a scripts al cerrar la tapa de la pantalla.

8voto

M K Puntos 8307

No parece haber una forma de que un programa reciba una notificación cuando la tapa está cerrada. Sin embargo, el estado de la tapa puede ser monitoreado periódicamente (y en este caso particular, cada segundo) y las acciones tomadas en base al estado de la tapa.

No conozco ningún programa que pueda proporcionar una solución completa para su necesidad, pero puede utilizar la siguiente información para construir una solución usted mismo.

  1. Descargar esto clamshellstate.pl perl script

  2. Puede ejecutarlo en Terminal (bajo /Applications/Utilities ) como:

    ./clamshellstate.pl 1  

    para obtener una salida como "Open" o "Closed" indicando el estado actual de la tapa

  3. Crear un shell script como (sustituir scripta ejecutar con un shell script que quieras ejecutar):

    ./clamshellstate.pl 1 | grep Closed > /dev/null && *script-to-run*
  4. Configura este script para que se ejecute una vez por segundo utilizando launchd.plist . O utilice Lingon para configurar fácilmente launchd.plist.

Nota: En lugar de clamshellstate.pl, también puede utilizar el siguiente comando en Terminal :

ioreg -r -k AppleClamshellState | grep '"AppleClamshellState" = Yes' | cut -f2 -d"="

para obtener un "Sí" para el estado cerrado y un "No" para el estado abierto.

3voto

También puede intentar utilizar SleepWatcher . Consulte el Léame para ver las instrucciones:

1. Instale el software SleepWatcher:

$ sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
$ sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8

2. Lee la página de manual y piensa en las características de SleepWatcher que quieres utilizar:

$ man sleepwatcher

3. Escriba pequeños shell scripts que realicen las acciones que quiere desencadenar con SleepWacher y pruébelos.

4. Pruebe sus scripts en combinación con SleepWatcher, iniciado en primer plano en una ventana de Terminal, por ejemplo:

$ /usr/local/sbin/sleepwatcher --verbose --sleep /path/to/your/sleepscript --wakeup /path/to/your/wakeupscript ...

5. Ponga su línea de comandos SleepWatcher en un archivo de configuración del agente launchd. Como ejemplo puede utilizar uno de los plists de ~/Desktop/sleepwatcher_2.2/config. Para más información sobre launchd y su configuración, consulte las páginas man de launchd y launchd.plist y http://developer.apple.com/macosx/launchd.html.

6. Copie la configuración de su agente launchd en /Library/LaunchDaemons o ~/Library/LaunchAgents, dependiendo de si necesita un demonio para todo el sistema o un agente de usuario.

7. Cargue la configuración del agente launchd mediante launchctl (consulte los ejemplos anteriores y la página man de launchctl).

2voto

AisIceEyes Puntos 8

Puede intentar utilizar el ControlPlane que puede actuar sobre varios cambios de estado en su Mac, incluyendo si la tapa está cerrada o no.

También es posible utilizar Cuchara de martillo para activar guiones scripts al despertar y al dormir como se menciona en mi responder a otra pregunta. Los lua scripts podrían ser aumentados para comprobar el estado de la tapa utilizando el ioreg -r -k AppleClamshellState prueba mencionada en la respuesta de M K aquí.

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