รับชื่อผู้ใช้ที่ใช้งานอยู่ในสคริปต์บน Mac OS


3

ฉันมีสคริปต์ Perl (สคริปต์นี้เป็นที่แน่นอน) ที่บันทึกกิจกรรมของผู้ใช้ตามเวลาว่างบนระบบ MacOS X Snow Leopard อย่างไรก็ตามเมื่อเปิดใช้งานการสลับผู้ใช้อย่างเร็วผู้ใช้มากกว่าหนึ่งรายอาจเข้าสู่ระบบในเวลาเดียวกัน ฉันต้องการให้สคริปต์ดูคอมพิวเตอร์ว่า 'ไม่ได้ใช้งาน' หากผู้ใช้รายอื่นทำงานอยู่ (เช่นใช้ GUI) ผ่านการสลับผู้ใช้อย่างเร็ว

มีหลายวิธีที่จะคิดออกเมื่อผู้ใช้เข้าสู่ระบบการค้นหาเมื่อผู้ใช้ "สลับ" ครั้งสุดท้ายดูเหมือนยากขึ้น วิธีแก้ปัญหาของฉันคือการดูที่/var/log/secure.logบันทึกเหตุการณ์การสลับผู้ใช้อย่างรวดเร็ว:

tail -200 /var/log/secure.log | grep "User info context values set" | tail -1

อย่างไรก็ตามสำหรับผู้ใช้ที่เรียกใช้สคริปต์ Perl ที่ไม่ใช่ผู้ดูแลระบบsecure.logจะไม่สามารถอ่านได้ มีวิธีอื่นในการค้นหาผู้ใช้ที่เข้าสู่ระบบอยู่ในขณะนี้หรือเหตุการณ์ Fast User Switching ครั้งสุดท้ายคืออะไร

ioregแน่นอนว่าปัญหาที่เกิดขึ้นอาจจะโกงถ้าผมมีวิธีการในการหาเวลาว่างสำหรับผู้ใช้ที่ใช้สคริปต์เท่านั้นไม่ใช่เวลาว่างทั้งหมดของคอมพิวเตอร์ฉันกำลังได้รับจาก ดังนั้นฉันเปิดรับข้อเสนอแนะที่นั่นเช่นกัน

ขอบคุณ!


จะทำอย่างไรถ้าฉันเรียกใช้การสลับผู้ใช้อย่างรวดเร็ว ( CGSession) แต่อย่าสลับไปยังผู้ใช้รายอื่นเมื่อหน้าต่างการเข้าสู่ระบบปรากฏขึ้น และเมื่อใช้เถาเซิร์ฟเวอร์ผู้ใช้หลายคนอาจจะใช้งานได้พร้อมกัน กล่าวอีกนัยหนึ่ง: หากคุณกำลังติดตามผู้ใช้ที่เฉพาะเจาะจงจริงๆแล้วบางทีคุณควรหาวิธีดูว่าผู้ใช้นั้นทำงานอยู่จริงหรือไม่
Arjan

ในการคาดเดาป่าฉันคิดบางทีCGSessionอาจจะมีตัวเลือกที่มีประโยชน์บางบรรทัดคำสั่ง แต่ไม่มีซิการ์ฉันเดา:strings /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession | grep "^-"
Arjan

ฉันจะไม่กังวลเกี่ยวกับ "ผู้ใช้หลายคน" ผ่านเซสชัน VNC
Michael Goerz

แน่นอนคุณกำลัง: ฉันต้องการค้นหาว่าผู้ใช้เฉพาะเข้าสู่ระบบและใช้ GUI ในขณะนี้หรือรับเวลาว่างสำหรับผู้ใช้เท่านั้นแทนระบบทั้งหมด
Michael Goerz

คำตอบ:


4

ฉันไม่ทราบวิธีการรับเวลาตั้งแต่เปลี่ยน แต่คุณสามารถรับผู้ใช้ที่ใช้งานอยู่ในปัจจุบันโดยการตรวจสอบความเป็นเจ้าของใน / dev / console อาจมีวิธีที่ดีกว่าใน Perl แต่คำสั่ง stat จะทำ:

my $user = `stat -f%Su /dev/console`;

ดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบ!
Michael Goerz

ดี! นอกจากนี้คุณจะได้รับrootในขณะที่หน้าต่างการเข้าสู่ระบบของการสลับผู้ใช้อย่างรวดเร็วปรากฏขึ้น:while true; do stat -f%Su /dev/console; sleep 2; done
Arjan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.