Ejecute un script de shell cuando cambie a la energía de la batería

Historia del usuario:

Como usuario de MacBookPro, quiero ejecutar una secuencia de commands que expulsa mi unidad USB cuando desconecto la fuente de alimentación para no tener que acordarme de expulsarla antes de agarrar mi computadora portátil y salir corriendo a una reunión.

  • Deshabilitar alarma audible en UPS
  • Mensajes Video Chat
  • hd externo mac ntfs 3g no pudo montar
  • Actividad constante del disco externo cuando la MacBook está en estado de suspensión
  • ¿Por qué las aplicaciones de pantalla completa cambian su order en Mission Control?
  • WiFi Sync iPhone en una nueva MacBook Pro
  • Criterios de aceptación:

    1. NO aplicaciones de terceros
    2. NO sondeo Debe ser impulsado por events

    Ya tengo un script que utilizo para detectar cambios en el cable de networking. Lo lanzo usando launchctl con un WatchPath como este en mi file .plist:

    <key>WatchPaths</key> <array> <string>/Library/Preferences/SystemConfiguration</string> </array> 

    Espero encontrar una manera similar de lanzar una secuencia de commands diferente cuando mi cable de alimentación está conectado / desconectado.

    Ya sé cómo detectar si la alimentación de CA está conectada o no … Solo necesito encontrar un evento que me diga que puedo hacerlo.

     AC_POWER=`ioreg -l | grep ExternalConnected | cut -d"=" -f2 | sed -e 's/ //g'` if [[ "$AC_POWER" == "No" ]] then for MEDIA_PATH in "/Volumes/Backup Drive 1/" /Volumes/MyPhotos/ do if [ -e "$MEDIA_PATH" ] then echo "Ejecting $MEDIA_PATH" diskutil eject "$MEDIA_PATH" else echo "$MEDIA_PATH not mounted" fi done else echo "AC Power connected" fi 

  • ¿Cómo se personalizan los icons de la barra lateral de Lion Finder?
  • Control deslizante del tamaño del icono del buscador roto, ¿cómo solucionarlo?
  • ¿Cómo sincronizo los llaveros entre las computadoras?
  • Aplicaciones de Lion que abren files anteriores
  • Debajo de Lion, no se puede iniciar session con los controlleres DisplayLink instalados
  • Vaciar la papelera: no funciona
  • 3 Solutions collect form web for “Ejecute un script de shell cuando cambie a la energía de la batería”

    ControlPlane , que retomó donde dejó el genial Marco Polo, te permite build reglas basadas en el context que pueden hacer las cosas por ti en function de dónde te encuentres y qué estás haciendo. Utiliza un enfoque basado en la evidencia para determinar dónde se encuentra y, una vez que los criterios de su location superan un determinado umbral de confianza, ejecuta acciones para usted en function de la confianza de que se encuentra "en esa location".

    Es genial.

    Una de las fonts de evidencia que admite es la fuente de energía actual. Y su soporte de fuente de evidencia se basa en fonts basadas en events.

    Y es de código abierto .

    Y gratis.

    Puede configurarlo para ejecutar un AppleScript (o un script de shell) por usted cuando la fuente de alimentación cambie o cuando cambie en una dirección.

    Entiendo que no desea utilizar ninguna aplicación de terceros. Sin embargo, debes tener en count que hay uno que puede hacer exactamente lo que pides. Esto demuestra que lo que buscas es posible.

    Power Manager puede ejecutar un script cuando desconecta su MacBook Pro de la stream de la networking .

    Utilizo esta capacidad para hacer que mi MacBook Pro ejecute un script de shell cada vez que enchufo y desenchufo el cable de alimentación.

    Ejecute un script con batería - DssW Power Manager

    Descargo de responsabilidad: trabajo para DssW, los creadores de Power Manager. Puedo confirmar que esta solución no sondea y está impulsada por events.

    Sé que llegué muy tarde al juego para responder a esta request, pero lo hice yo mismo y está funcionando perfectamente. Todo lo que necesita es un LaunchAgent que mire com.apple.telemetry.battery.charge-cycle en / private / var / root / Library / Preferences (estoy haciendo esto en Yosemite y no lo he probado en otros sistemas operativos).

     <?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>com.me.helloworld</string> <key>ProgramArguments</key> <array> <string>/PATH/TO/SCRIPT.sh</string> </array> <key>WatchPaths</key> <array> <string>/private/var/root/Library/Preferences/com.apple.telemetry.battery.charge-cycle.plist</string> </array> </dict> </plist> 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).