Estou procurando uma solução que inicie um cronômetro sempre que entrar no wifi do meu escritório e o interrompa quando sair. Essencialmente, deve registrar as horas que passei no escritório. Estou ciente de que existe um software iOS para isso, mas eu gosto da duração da bateria.
Um bônus extra seria se a solução pudesse registrar as horas no iCal automaticamente.
Respostas:
O ControlPlane pode ser algo que você pode usar para fazer isso:
Em poucas palavras, você pode fornecer ao ControlPlane uma "fonte de evidência", como
Em seguida, execute um conjunto de ações ao entrar (ou sair) de um contexto específico, como
Meu pensamento aqui é que, se o ControlPlane sabe como o wifi do seu escritório é chamado, você pode criar regras para que, ao se conectar, inicie um aplicativo ou script de shell para começar a registrar suas horas. Em seguida, quando você se desconecta, interrompe o aplicativo ou executa outro script de shell para parar de registrar suas horas.
Sei que essa pode não ser a solução "bala de prata" que você estava procurando, mas pode valer a pena tentar. Você ainda precisará encontrar algum tipo de aplicativo / script de timer, mas essa provavelmente é a parte mais fácil do problema :)
fonte
Você pode usar o comando
networksetup -getairportnetwork <device>
para obter o nome da sua rede sem fio conectada no momento (onde está o ID do dispositivo do seu aeroporto - provavelmente en1).A partir daí, você pode usar o launchd para agendar um script para ser executado a cada 5 minutos, o que obterá o nome da rede sem fio à qual você está conectado e será registrado quando você se conectar ao seu trabalho por wi-fi.
Dependendo do que você deseja, você pode usar o mesmo script para registrar outra entrada quando perceber que não está mais conectado ao seu trabalho wi-fi ou para publicar algum tipo de notificação (talvez usando rosnado) em intervalos específicos. Algo como "Estou no trabalho há 9 horas - hora de ir para casa".
Ou você pode usar os horários de início / término em um log em execução e escrever outro script para analisá-lo e criar algum tipo de relatório.
Eu tenho pedaços desses tipos de scripts por aí, se o tempo no trabalho permitir, vou adicionar algo aqui.
man launchd
é bastante útil.fonte
Aqui está outra opção para pessoas que tentam fazer isso.
Em vez de executar um comando a cada 5 minutos, você pode executá-lo sempre que a pasta
/Library/Preferences/SystemConfiguration/
mudar. Isso geralmente acontece apenas quando há algum tipo de alteração na rede.Você pode fazer isso usando o Lingon ou criar seu próprio launchd, que seria algo como isto:
Obviamente, você gostaria de substituir
/path/to/your/script.sh
o caminho real.Observe que você pode precisar incluir um 'sleep 10' próximo ao início do script para dar ao Mac a chance de fazer todos os ajustes assim que ocorrer uma alteração na rede.
Além disso, a maneira mais fácil de obter o nome (SSID) da rede AirPort à qual você está conectado é:
O
airport
comando pode ser encontrado/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
em 10.8 (e acredito que 10.7 e 10.6)Geralmente, eu o vinculo a / usr / local / bin:
você pode precisar
sudo
desse comando, dependendo de como o seu / usr / local / bin / está configurado.Por último, mas não menos importante, você precisa considerar o que fazer quando colocar o laptop em modo de suspensão. Por exemplo, se você está no escritório das 9h às 17h e dorme seu laptop às 5h, também deseja gravar isso, certo? Caso contrário, como você saberá quando saiu?
Para isso, recomendo o SleepWatcher 2.2, disponível em http://www.bernhard-baehr.de (gratuito, código fonte incluído). Isso permitirá que você execute um script de shell sempre que o Mac acordar ou dormir.
A única outra consideração é o que fazer se você fizer logoff ou desligar o computador, em vez de suspendê-lo. Eu não tenho uma boa resposta para essa. Teoricamente, um LogoutHook seria a resposta, mas eles parecem não confiáveis, especialmente no desligamento e no logout.
Uma sugestão completamente não relacionada
Você mencionou que possui um dispositivo iOS. Talvez uma maneira de resolver esse problema seja criar um lembrete para sempre que você chegar ou sair do trabalho. Quando o lembrete disparar, ative a Siri e diga "Lembre-se de deixar o trabalho às 17:00" ou "Lembre-se de chegar ao trabalho às 9:00" e o Siri fará uma anotação. Não é elegante nem completamente automático, mas se eu estivesse olhando para rastrear horas faturáveis, não me importaria com um pouco de redundância :-)
fonte