9 votes

Exécuter un shell script lors du passage à l'alimentation par batterie.

Histoire d'utilisateur :

En tant qu'utilisateur de MacBookPro, je veux exécuter un script qui éjecte ma clé USB lorsque je déconnecte la source d'alimentation, afin que je n'aie pas à me souvenir de l'éjecter avant de prendre mon ordinateur portable et de me dépêcher d'aller à une réunion.

Critères d'acceptation :

  1. PAS d'applications tierces
  2. PAS de sondage. Il doit être piloté par des événements.

J'ai déjà un script que j'utilise pour détecter les changements de câble réseau. Je le lance en utilisant launchctl avec un WatchPath comme celui-ci dans mon fichier .plist :

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

J'espère trouver un moyen similaire pour lancer un script différent lorsque mon cordon d'alimentation est branché/débranché.

Je sais déjà comment détecter si le courant alternatif est connecté ou non... J'ai juste besoin de trouver un événement qui me dise que je peux le faire.

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

4voto

shsteimer Points 8749

Plan de contrôle L'application Marco Polo, qui a repris le flambeau de l'application Marco Polo, vous permet de créer des règles basées sur le contexte qui peuvent faire des choses pour vous en fonction de l'endroit où vous vous trouvez et de ce que vous faites. Il utilise une approche fondée sur des preuves pour déterminer où vous êtes et, une fois que vos critères de localisation dépassent un certain seuil de confiance, il exécute des actions pour vous en se basant sur la certitude que vous êtes "à cet endroit".

C'est plutôt cool.

L'une des sources de preuves qu'il prend en charge est la source de courant. Et son support de sources de preuves est entièrement basé sur des sources événementielles.

Et c'est une source ouverte .

Et gratuit.

Vous pouvez le configurer pour qu'il exécute un AppleScript (ou un shell script) pour vous lorsque la source d'alimentation change ou juste lorsqu'elle change dans un sens.

3voto

Graham Miln Points 39606

Je comprends que vous ne voulez pas utiliser d'applications tierces. Cependant, vous devez savoir qu'il en existe une qui peut faire exactement ce que vous demandez. Cela prouve que ce que vous cherchez est possible.

Power Manager peut exécuter un script lorsque vous débranchez votre MacBook Pro du secteur .

J'utilise cette possibilité pour que mon MacBook Pro exécute un shell script chaque fois que je branche et débranche le cordon d'alimentation.

Run a script on battery - DssW Power Manager

Avertissement : je travaille pour DssW, les créateurs de Power Manager. Je peux confirmer que cette solution n'effectue pas de sondage et qu'elle est pilotée par des événements.

2voto

tulgeywood Points 21

Je sais que je suis très en retard pour répondre à cette demande mais je viens de le faire moi-même et cela fonctionne parfaitement. Tout ce dont vous avez besoin est un LaunchAgent qui surveille com.apple.telemetry.battery.charge-cycle dans /private/var/Root/Library/Preferences (je fais cela sur Yosemite et n'ai pas testé dans d'autres OS).

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X