사무실 Wi-Fi에 로그인 할 때마다 타이머를 시작하고 떠날 때 중지하는 솔루션을 찾고 있습니다. 사무실에서 보낸 시간을 기록해야합니다. 나는 이것에 대한 iOS 소프트웨어가 있다는 것을 알고 있지만 배터리 시간을 좋아합니다.
솔루션이 iCal에 시간을 자동으로 기록 할 수있는 경우 추가 보너스가 제공됩니다.
사무실 Wi-Fi에 로그인 할 때마다 타이머를 시작하고 떠날 때 중지하는 솔루션을 찾고 있습니다. 사무실에서 보낸 시간을 기록해야합니다. 나는 이것에 대한 iOS 소프트웨어가 있다는 것을 알고 있지만 배터리 시간을 좋아합니다.
솔루션이 iCal에 시간을 자동으로 기록 할 수있는 경우 추가 보너스가 제공됩니다.
답변:
ControlPlane 은 다음을 수행하는 데 사용할 수 있습니다.
ControlPlane은 사용 가능한 여러 증거 소스를 기반으로 현재 위치 또는 수행중인 작업을 결정한 다음 기본 설정에 따라 Mac을 자동으로 재구성합니다. 증거 출처에는 현재 위치, 보이는 WiFi 네트워크, 연결된 USB 장치, 실행중인 응용 프로그램 등이 포함됩니다. 쉘 스크립트를 사용하여 자신 만의 증거 자료를 작성할 수도 있습니다!
간단히 말해 ControlPlane에 "증거 소스"를 제공 할 수 있습니다.
- WiFi, 범위 내에 있거나 현재 연결된 네트워크를 기반으로하는 네트워크
그런 다음과 같은 특정 컨텍스트를 시작하거나 떠날 때 일련의 작업을 수행하십시오.
- 응용 프로그램 시작을 포함하여 모든 파일을 엽니 다
- AppleScript 또는 쉘 스크립트와 같은 스크립트를 실행하십시오.
내 생각은 ControlPlane이 사무실 wifi가 무엇인지 알고 있다면 규칙을 만들 수 있으므로 규칙에 연결하면 응용 프로그램이나 셸 스크립트를 시작하여 시간 기록을 시작할 수 있습니다. 그런 다음 연결을 끊을 때 응용 프로그램을 중지하거나 다른 셸 스크립트를 실행하여 시간 기록을 중지합니다.
나는 이것이 당신이 찾고있는 "은 총알"솔루션이 아니라는 것을 알고 있지만 시도해 볼 가치가 있습니다. 여전히 타이머 응용 프로그램 / 스크립트를 찾아야하지만 문제의 더 쉬운 부분 일 것입니다. :)
이 명령 networksetup -getairportnetwork <device>
을 사용 하여 현재 연결된 무선 네트워크의 이름 (여기서 공항의 장치 ID, 아마도 en1)을 가져올 수 있습니다 .
여기에서 launchd를 사용하여 5 분마다 스크립트가 실행되도록 예약 할 수 있습니다. 이렇게하면 연결된 무선 네트워크의 이름을 얻고 업무용 Wi-Fi에 처음 연결할 때 기록됩니다.
원하는 내용에 따라 동일한 스크립트를 사용하여 더 이상 회사 Wi-Fi에 연결되지 않은 것을 발견했을 때 다른 항목을 기록하거나 특정 간격에 대해 일종의 알림 (아마도 growl 사용)을 게시 할 수 있습니다. "저는 9 시간 동안 일했습니다. 집에 갈 시간입니다."
또는 실행중인 로그에서 시작 / 종료 시간을 사용하고 다른 스크립트를 작성하여 구문 분석하고 일종의 보고서를 작성할 수 있습니다.
나는 이러한 유형의 스크립트 조각을 가지고 있으며, 직장에서 시간이 허락한다면 여기에 무언가를 추가 할 것입니다.
man launchd
매우 유용합니다.
이 작업을 수행하려는 사람들을위한 또 다른 옵션이 있습니다.
5 분마다 명령을 실행하는 대신 폴더가 /Library/Preferences/SystemConfiguration/
변경 될 때마다 명령을 실행할 수 있습니다 . 이것은 일반적으로 일종의 네트워크 변경이있을 때만 발생합니다.
Lingon을 사용 하여이 작업을 수행 하거나 다음과 같이 시작된 plist를 만들 수 있습니다.
<?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>
분명히 /path/to/your/script.sh
실제 경로 로 바꾸고 싶을 것 입니다.
네트워크가 변경되면 Mac에서 모든 조정을 수행 할 수 있도록 스크립트 시작 부분에 '슬립 10'을 포함해야 할 수도 있습니다.
또한, 연결된 AirPort 네트워크의 이름 (SSID)을 얻는 가장 쉬운 방법은 다음과 같습니다.
airport -I | awk -F': ' '/ SSID/{print $NF}'
이 airport
명령은 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
10.8 에서 찾을 수 있습니다 (10.7과 10.6을 믿습니다)
일반적으로 / usr / local / bin에 연결합니다.
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
sudo
/ usr / local / bin / 설정 방법에 따라 해당 명령 이 필요할 수 있습니다 .
마지막으로 랩톱을 절전 모드로 전환 할 때 수행 할 작업을 고려해야합니다. 예를 들어, 9-5시에 사무실에 있고 5시에 랩탑을자는 경우에도 기록하고 싶습니까? 그렇지 않으면 언제 떠 났는지 어떻게 알 수 있습니까?
이를 위해 http://www.bernhard-baehr.de (무료, 소스 코드 포함) 에서 구할 수있는 SleepWatcher 2.2를 권장 합니다. 그러면 Mac이 깨어나거나 잠자기 할 때마다 쉘 스크립트를 실행할 수 있습니다.
다른 고려 사항은 컴퓨터를 절전 모드로 전환하지 않고 로그 아웃하거나 종료 한 경우 수행 할 작업입니다. 나는 그것에 대한 좋은 대답이 없습니다. 이론적으로 LogoutHook 이 답이 될 수 있지만 특히 종료 대 로그 아웃에서 신뢰할 수없는 것처럼 보입니다.
iOS 기기가 있다고 언급했습니다. 아마도이 문제를 해결하는 한 가지 방법은 출근 또는 퇴근 할 때마다 알림을 만드는 것입니다. 리마인더가 꺼지면 Siri를 트리거하고 "오후 5시에 퇴근을 기억하십시오"또는 "오전 9시에 도착한 것을 기억하십시오"라고 말하면 Siri가이를 기록합니다. 우아하지 않거나 완전히 자동은 아니지만 청구 가능한 시간을 추적하는 경우 약간의 중복성을 신경 쓰지 않습니다. :-)