8 votes

Comment puis-je suivre automatiquement les heures de travail au bureau lorsque je me connecte au réseau Wi-Fi de mon bureau ?

Je cherche une solution qui démarre une minuterie lorsque je me connecte au réseau wifi de mon bureau et qui l'arrête lorsque je pars. Elle devrait essentiellement enregistrer les heures que j'ai passées au bureau. Je sais qu'il existe un logiciel iOS pour cela, mais j'aime mon temps de batterie tel qu'il est.

Un bonus supplémentaire serait que la solution puisse enregistrer automatiquement les heures dans iCal.

9voto

binarybob Points 9292

Plan de contrôle pourrait être quelque chose que vous pouvez utiliser pour accomplir cela :

ControlPlane détermine où vous êtes ou ce que vous faites en se basant sur une sources de données disponibles, puis reconfigure automatiquement reconfigure automatiquement votre Mac en fonction de vos préférences. Les sources de preuves peuvent peuvent inclure votre emplacement actuel, les réseaux WiFi visibles, les périphériques connectés, des applications en cours d'exécution, etc. Vous pouvez même écrire vos propres sources de preuves en utilisant des scripts !

En bref, vous pouvez donner à ControlPlane une "source de preuves", telle que

  • WiFi, soit les réseaux à portée ou en fonction du réseau que vous êtes actuellement connecté

enter image description here

Effectuer ensuite un ensemble d'actions lors de l'entrée (ou de la sortie) dans un contexte particulier, telles que

  • Ouvrez n'importe quel fichier, y compris en démarrant des applications
  • Exécuter un script, tel que l'AppleScript ou le shell script.

enter image description here

Ma pensée ici est que si ControlPlane sait comment s'appelle le wifi de votre bureau, vous pouvez créer des règles pour que lorsque vous vous y connectez, vous démarriez une application ou un shell script pour commencer à enregistrer vos heures. Puis, lorsque vous vous déconnectez, vous arrêtez l'application ou exécutez un autre shell script pour arrêter l'enregistrement de vos heures.

Je me rends compte que ce n'est peut-être pas la solution miracle que vous recherchez, mais ça peut valoir le coup d'essayer. Vous devrez toujours trouver une sorte d'application/script de minuterie, mais c'est probablement la partie la plus facile du problème :)

4voto

dbkk Points 5305

Vous pouvez utiliser la commande networksetup -getairportnetwork <device> pour obtenir le nom de votre réseau sans fil actuellement connecté (où se trouve l'ID du périphérique de votre aéroport, probablement en1).

À partir de là, vous pouvez utiliser launchd pour planifier l'exécution d'un script toutes les 5 minutes environ, qui récupérera le nom du réseau sans fil auquel vous êtes connecté et enregistrera la première connexion au wi-fi de votre entreprise.

Selon ce que vous voulez, vous pourriez ensuite utiliser le même script pour enregistrer une autre entrée lorsqu'il remarque que vous n'êtes plus connecté à votre wi-fi au travail, ou pour afficher une sorte de notification (peut-être en utilisant growl) à des intervalles spécifiques. Quelque chose du genre "Je suis au travail depuis 9 heures, il est temps de rentrer à la maison".

Ou vous pourriez utiliser les heures de début et de fin dans un journal d'exécution et écrire un autre script pour l'analyser et créer une sorte de rapport.

J'ai des morceaux de ces types de scripts qui traînent, si le temps au travail le permet, j'ajouterai quelque chose ici.

man launchd est très utile.

1voto

moodforaday Points 2633

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

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