Voici une autre option pour les personnes qui essaient de faire cela.
Au lieu d'exécuter une commande toutes les 5 minutes, vous pouvez l'exécuter chaque fois que le dossier /Library/Preferences/SystemConfiguration/
changements. Cela ne se produit généralement que lorsqu'il y a une sorte de changement de réseau.
Vous pouvez le faire en utilisant Lingon ou faire votre propre plist launchd qui ressemblerait à quelque chose comme ça :
<?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>AbandonProcessGroup</key>
<true/>
<key>Label</key>
<string>localhost.on_networkchange</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration/</string>
</array>
</dict>
Il est évident que vous voudriez remplacer /path/to/your/script.sh
au chemin réel.
Notez que vous devrez peut-être inclure un 'sleep 10' près du début du script pour donner au Mac une chance d'effectuer tous ses ajustements une fois qu'un changement de réseau s'est produit.
Le moyen le plus simple d'obtenir le nom (SSID) du réseau AirPort auquel vous êtes connecté est également le suivant :
airport -I | awk -F': ' '/ SSID/{print $NF}'
El airport
se trouve à l'adresse suivante /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
dans 10.8 (et je crois que 10.7 et 10.6)
Je le lie généralement à /usr/local/bin :
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
vous devrez peut-être sudo
cette commande, selon la façon dont votre /usr/local/bin/ est configuré.
Enfin, vous devez réfléchir à ce que vous devez faire lorsque vous mettez votre ordinateur portable en veille. Par exemple, si vous êtes au bureau de 9 à 17 heures et que vous mettez votre ordinateur portable en veille à 17 heures, vous voulez aussi l'enregistrer, non ? Sinon, comment saurez-vous quand vous êtes parti ?
Pour cela, je recommande SleepWatcher 2.2 qui est disponible à l'adresse suivante http://www.bernhard-baehr.de (gratuit, code source inclus). Cela vous permettra d'exécuter un shell script chaque fois que votre Mac se réveille ou se couche.
La seule autre considération est de savoir ce qu'il faut faire si vous vous déconnectez ou éteignez votre ordinateur au lieu de le mettre en veille. Je n'ai pas de bonne réponse à cette question. Théoriquement, un LogoutHook serait la solution, mais ils ne semblent pas fiables, surtout en cas d'arrêt ou de déconnexion.
Une suggestion sans aucun rapport
Vous avez mentionné que vous avez un appareil iOS. Une façon de résoudre ce problème serait de créer un rappel à chaque fois que vous arrivez ou partez du travail. Lorsque le rappel se déclenche, déclenchez Siri et dites "Je me souviens avoir quitté le travail à 17 heures" ou "Je me souviens être arrivé au travail à 9 heures" et Siri en prendra note. Ce n'est ni élégant ni complètement automatique, mais si je cherchais à suivre les heures facturables, je n'aurais rien contre un peu de redondance :-)