ฉันจะติดตามชั่วโมงในสำนักงานโดยอัตโนมัติได้อย่างไรเมื่อฉันเชื่อมต่อกับ Wi-Fi ในสำนักงานของฉัน


8

ฉันกำลังมองหาวิธีแก้ปัญหาที่เริ่มจับเวลาเมื่อใดก็ตามที่ฉันลงชื่อเข้าใช้ office wifi ของฉันและหยุดเมื่อฉันออกจาก ควรบันทึกชั่วโมงที่ฉันใช้ไปที่สำนักงาน ฉันรู้ว่ามีซอฟต์แวร์ iOS สำหรับสิ่งนี้ แต่ฉันชอบเวลาแบตเตอรี่ของฉันตามที่เป็นอยู่

โบนัสพิเศษจะเป็นถ้าการแก้ปัญหาสามารถเข้าสู่ระบบชั่วโมงใน iCal โดยอัตโนมัติ


น่าสนใจฉันไม่รู้แอพที่สามารถทำสิ่งนี้ได้ ...
มาร์ตินมาร์กซินี่

ฉันสมมติว่างานของคุณมีชื่อ wifi (essid) แตกต่าง / แตกต่างจากที่คุณใช้ในบ้านใช่ไหม
alesplin

@alesplin ใช่แน่นอน
yusf

ฉันอาจแฮ็คบิตที่สามารถแก้ไขได้ ฉันจะดูและดู
alesplin

@alesplin เป็นยังไงบ้าง?
yusf

คำตอบ:


9

ControlPlaneอาจเป็นสิ่งที่คุณสามารถใช้เพื่อทำให้สิ่งนี้สำเร็จ:

ControlPlane กำหนดว่าคุณอยู่ที่ไหนหรือกำลังทำอะไรอยู่บนพื้นฐานของแหล่งหลักฐานที่มีอยู่จำนวนมากจากนั้นกำหนดค่า Mac ใหม่ตามความต้องการของคุณโดยอัตโนมัติ แหล่งที่มาของหลักฐานอาจรวมถึงตำแหน่งปัจจุบันของคุณเครือข่าย WiFi ที่มองเห็นได้อุปกรณ์ USB ที่เชื่อมต่อแอปพลิเคชันที่ใช้งานและอื่น ๆ คุณยังสามารถเขียนแหล่งหลักฐานของคุณเองโดยใช้เชลล์สคริปต์!

โดยสรุปคุณสามารถให้ ControlPlane เป็น "แหล่งที่มาของหลักฐาน" เช่น

  • WiFi ทั้งเครือข่ายที่อยู่ในระยะหรือขึ้นอยู่กับเครือข่ายที่คุณเชื่อมต่ออยู่ในปัจจุบัน

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นดำเนินการชุดของการดำเนินการเมื่อป้อน (หรือออก) บริบทเฉพาะเช่น

  • เปิดไฟล์ใดก็ได้รวมถึงการเริ่มแอปพลิเคชัน
  • รันสคริปต์เช่น AppleScript หรือเชลล์สคริปต์

ป้อนคำอธิบายรูปภาพที่นี่

ความคิดของฉันที่นี่คือถ้า ControlPlane รู้ว่า wifi สำนักงานของคุณชื่ออะไรคุณสามารถสร้างกฎเพื่อที่ว่าเมื่อคุณเชื่อมต่อคุณเริ่มแอปพลิเคชันหรือเชลล์สคริปต์เพื่อเริ่มการบันทึกเวลาของคุณ จากนั้นเมื่อคุณตัดการเชื่อมต่อคุณหยุดแอปพลิเคชันหรือเรียกใช้เชลล์สคริปต์อื่นเพื่อหยุดการบันทึกชั่วโมงของคุณ

ฉันรู้ว่านี่อาจไม่ใช่โซลูชัน "กระสุนเงิน" ที่คุณกำลังมองหา แต่อาจคุ้มค่าที่จะลอง คุณยังคงต้องหาแอพจับเวลา / สคริปต์บางอย่าง แต่นั่นอาจเป็นปัญหาที่ง่ายกว่า :)


ขอบคุณสำหรับคำตอบ! ดูเหมือนว่า ControlPlane จะค่อนข้างล้นมือในตอนแรก (กำลังมองหาโซลูชันที่มีน้ำหนักเบากว่า) แต่ฉันจะลองใช้เมื่อฉันมีเวลาเรียนรู้ AppleScript
yusf

@yusf ไม่มีปัญหา หวังว่ามันจะช่วยได้ ฉันจะสนใจโซลูชันสุดท้ายของคุณเมื่อคุณไปถึงที่นั่น! :-)
binarybob

4

คุณสามารถใช้คำสั่งnetworksetup -getairportnetwork <device>เพื่อรับชื่อเครือข่ายไร้สายที่เชื่อมต่อในปัจจุบันของคุณ (ซึ่งเป็นรหัสอุปกรณ์ของสนามบินของคุณ - อาจ en1)

จากตรงนั้นคุณสามารถใช้ launchd เพื่อกำหนดเวลาให้สคริปต์ทำงานทุกๆ 5 นาทีหรือมากกว่านั้นซึ่งจะได้รับชื่อเครือข่ายไร้สายที่คุณเชื่อมต่อและเข้าสู่ระบบเมื่อคุณเชื่อมต่อกับงาน Wi-Fi ครั้งแรก

ขึ้นอยู่กับสิ่งที่คุณต้องการจากนั้นคุณสามารถใช้สคริปต์เดียวกันเพื่อบันทึกรายการอื่นเมื่อสังเกตว่าคุณไม่ได้เชื่อมต่อกับงาน Wi-Fi ของคุณอีกต่อไปหรือโพสต์การแจ้งเตือนบางประเภท (อาจใช้คำราม) ในบางช่วงเวลา บางอย่างตามแนว "ฉันทำงานมา 9 ชั่วโมง - เวลากลับบ้าน"

หรือคุณสามารถใช้เวลาเริ่มต้น / สิ้นสุดในบันทึกการทำงานและเขียนสคริปต์อื่นเพื่อแยกวิเคราะห์และสร้างรายงานบางประเภท

ฉันมีบิตและชิ้นส่วนของสคริปต์ประเภทนี้อยู่รอบ ๆ ถ้าเวลาที่อนุญาตให้ทำงานฉันจะเพิ่มบางสิ่งที่นี่

man launchd ค่อนข้างมีประโยชน์


ขอบคุณ @alespin! เปิดขึ้นสำหรับวิธีการเล็กน้อยที่ดี :)
yusf

1

นี่คือตัวเลือกอื่นสำหรับผู้ที่พยายามทำเช่นนี้

แทนที่จะเรียกใช้คำสั่งทุก 5 นาทีคุณสามารถเรียกใช้ได้ทุกครั้งที่โฟลเดอร์/Library/Preferences/SystemConfiguration/เปลี่ยนแปลง โดยทั่วไปจะเกิดขึ้นเฉพาะเมื่อมีการเปลี่ยนแปลงเครือข่ายบางประเภท

คุณสามารถทำได้โดยใช้Lingonหรือสร้าง launchd 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เส้นทางจริง

โปรดทราบว่าคุณอาจต้องรวม 'sleep 10' ใกล้กับจุดเริ่มต้นของสคริปต์เพื่อให้ Mac มีโอกาสทำการปรับเปลี่ยนทั้งหมดเมื่อมีการเปลี่ยนแปลงเครือข่ายเกิดขึ้น

นอกจากนี้วิธีที่ง่ายที่สุดในการรับชื่อ (SSID) ของเครือข่าย AirPort ที่คุณเชื่อมต่อคือ:

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 คุณต้องการบันทึกสิ่งนั้นด้วยใช่ไหม มิฉะนั้นคุณจะรู้ได้อย่างไรว่าคุณจะจากไป?

เพื่อที่ฉันแนะนำ SleepWatcher 2.2 ซึ่งสามารถใช้ได้จากhttp://www.bernhard-baehr.de (ฟรีรวมรหัสที่มา) ซึ่งจะช่วยให้คุณเรียกใช้เชลล์สคริปต์เมื่อใดก็ตามที่ Mac ของคุณตื่นหรือหลับ

สิ่งที่ต้องพิจารณาอีกประการหนึ่งคือจะทำอย่างไรถ้าคุณออกจากระบบหรือปิดเครื่องคอมพิวเตอร์แทนที่จะหลับ ฉันไม่มีคำตอบที่ดีสำหรับสิ่งนั้น ในทางทฤษฎีLogoutHookจะเป็นคำตอบ แต่สิ่งเหล่านั้นดูเหมือนไม่น่าเชื่อถือโดยเฉพาะอย่างยิ่งเมื่อปิดระบบและออกจากระบบ

คำแนะนำที่ไม่เกี่ยวข้องอย่างสมบูรณ์

คุณพูดถึงว่าคุณมีอุปกรณ์ iOS บางทีวิธีหนึ่งในการแก้ไขปัญหานี้อาจเป็นการสร้างตัวเตือนความจำเมื่อใดก็ตามที่คุณมาถึงหรือออกจากงาน เมื่อการเตือนความจำดับลงให้เรียก Siri แล้วพูดว่า "จำงานที่เหลือเวลา 5 โมงเย็น" หรือ "จำได้ว่ามาถึงที่ทำงานตอน 9.00 น." และ Siri จะจดบันทึกไว้ ไม่หรูหราหรือไม่สมบูรณ์แบบอัตโนมัติ แต่ถ้าฉันดูการติดตามเวลาที่เรียกเก็บเงินได้ฉันจะไม่คิดว่าจะมีความซ้ำซ้อน :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.