ฉันกำลังเล่นกับผู้จัดการฟาร์มเรนเดอร์แบบกำหนดเองและฉันต้องการเพิ่มเครื่อง OS X ลงในฟาร์มเรนเดอร์โดยอัตโนมัติเมื่อไม่ได้ใช้งาน
มีวิธีที่จะทริกเกอร์สคริปต์ให้ทำงานเมื่อผู้ใช้รายใดออกจากระบบแล้วหยุดเมื่อผู้ใช้รายใดเข้าสู่ระบบหรือไม่?
ฉันกำลังเล่นกับผู้จัดการฟาร์มเรนเดอร์แบบกำหนดเองและฉันต้องการเพิ่มเครื่อง OS X ลงในฟาร์มเรนเดอร์โดยอัตโนมัติเมื่อไม่ได้ใช้งาน
มีวิธีที่จะทริกเกอร์สคริปต์ให้ทำงานเมื่อผู้ใช้รายใดออกจากระบบแล้วหยุดเมื่อผู้ใช้รายใดเข้าสู่ระบบหรือไม่?
คำตอบ:
มีหลายวิธีที่จะเรียกใช้สคริปต์ที่เข้าสู่ระบบ / ออกจากระบบใน OS Xบางเมื่อเร็ว ๆ นี้และจะนำไปใช้ 10.5 และสูงกว่าบางคนเลิกค่อนข้าง Login Hook
แต่หนึ่งที่เร็วที่สุดที่จะเพิ่ม
ก่อนอื่นให้สร้างสคริปต์ที่คุณต้องการเรียกใช้ เปิด Terminal และป้อน:
touch ~/script.sh
open -e !$
จะเป็นการเปิดโปรแกรมแก้ไขข้อความ ป้อนสคริปต์เช่นมีเนื้อหาดังต่อไปนี้:
#!/bin/sh
# insert your script here
บันทึกไฟล์ ในเทอร์มินัลของคุณให้เรียกใช้:
chmod +x ~/script.sh
สิ่งนี้จะทำให้ไฟล์ปฏิบัติการได้ ตอนนี้ให้เพิ่มมันเป็นตะขอ:
sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/script.sh
นอกจากนี้ยังมีLogout Hook
สำเนา:
sudo defaults write com.apple.loginwindow LogoutHook /usr/local/bin/script2.sh
ฉันได้ทดสอบสิ่งนี้ใน OS X 10.6 แล้วและควรจะทำงานได้ถึง 10.8 โปรดทราบว่าสคริปต์ทำงานเป็นroot
และมีเบ็ดเดียวสำหรับการเข้าสู่ระบบและออกจากระบบตามลำดับ
หากต้องการยกเลิกทั้งหมดให้ป้อน
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook
โปรดทราบว่าวิธีนี้ไม่แนะนำสำหรับการปรับใช้หรือสิ่งใด ๆ แต่ถ้าคุณใช้เพียงอย่างเดียวกับคำถามของคุณที่ระบุว่าไม่น่ามีปัญหา
การเข้าสู่ระบบ hooks ถูกเลิกใช้ใน 10.4 เพื่อสนับสนุน launchd เมื่อต้องการเรียกใช้สคริปต์ที่เข้าสู่ระบบบันทึก plist ~/Library/LaunchAgents/test.plist
เช่นนี้เป็น launchctl load ~/Library/LaunchAgents/test.plist
มันเต็มไปเมื่อเข้าสู่ระบบต่อไปแม้ว่าคุณจะไม่ได้ทำงาน
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>test</string>
<key>ProgramArguments</key>
<array>
<string>say</string>
<string>test</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
สำหรับข้อมูลเพิ่มเติมโปรดดูman launchd.plist
และโพสต์บล็อกนี้
เพื่อให้ hooks เหล่านี้ทำงานได้ใน 10.10 คุณจะต้องทำสิ่งนี้:
เปิด/etc/ttys
ไฟล์: ใน Finder ให้เลือกไปที่โฟลเดอร์จากเมนูไปพิมพ์/etc/
จากนั้นคลิกไป
ในหน้าต่างที่ปรากฏขึ้นให้เปิดttys
ไฟล์ในโปรแกรมแก้ไขข้อความที่คุณต้องการ (เช่น TextEdit)
ค้นหาบรรทัดที่อ่าน:
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
แก้ไขบรรทัดนี้เพื่อให้อ่านได้ดังต่อไปนี้ (ไม่มีตัวแบ่งในบรรทัดนี้):
console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"
เช่นเพิ่ม(โดยที่เส้นทางแบบเต็มไปยังสคริปต์ที่คุณต้องการดำเนินการเมื่อผู้ใช้เข้าสู่ระบบ) ก่อนหน้าเครื่องหมายอัญประกาศคู่ ( )-LoginHook /path/to/script
/path/to/script
"
บันทึกไฟล์
ตรวจสอบให้แน่ใจว่าตัวแก้ไขข้อความที่คุณใช้แก้ไขไฟล์นี้ไม่ได้แบ่งบรรทัดด้านบนออกเป็นมากกว่าหนึ่งบรรทัด
หรือทำตามคำแนะนำทั้งหมดที่นี่: