AE Server Mac คืออะไร
เมื่อคุณทำงานกับ Mac หลายเครื่อง มันลำบากที่จะย้ายจากคอมพิวเตอร์หนึ่งไปอีกเครื่องเพื่อทำงานง่ายๆ ตัวอย่างเช่น พิมพ์เอกสารบน Mac อื่นหมายถึงต้องคัดลอกไฟล์บนคอมพิวเตอร์ของคุณก่อน แล้วล็อกอินเข้า Mac อีกเครื่องเพื่อพิมพ์จากที่นั่น สิ่งนี้เกิดขึ้นเมื่อไฟล์ไม่สามารถเปิดได้ด้วย Mac ของคุณ หรือแอปที่จำเป็นต้องเปิดไฟล์ล้าสมัย
การคัดลอกไฟล์ไปคอมพิวเตอร์อื่นลำบากเกินไป โดยเฉพาะถ้ามีไฟล์มาก โชคดีที่ Apple ทำให้ควบคุม Mac อื่นในเครือข่ายเดียวกันได้ง่ายขึ้นด้วย AppleScripts และ Remote Apple Events ด้วยเทคโนโลยีเหล่านี้ ผู้ใช้ Mac ตอนนี้สามารถเข้าถึง เปิดแอป และทำงานพื้นฐานจากระยะไกลได้ ผู้ใช้ไม่ต้องลุกจากที่นั่งแค่เพื่อฟัง iTunes, ส่งข้อความด้วยแอป Messages หรือส่งอีเมลให้เพื่อนร่วมงาน
Remote access มีประโยชน์ถ้าคุณมี Mac 2 เครื่องขึ้นไปที่บ้านหรือที่ทำงาน 雖然คุณสามารถควบคุม Mac อื่นในเครือข่ายเดียวกันได้ด้วยฟีเจอร์ Shared แต่การใช้คำสั่ง AppleScript และ AE Server เร็วกว่ามาก บวกคุณไม่ต้องเปิดฟีเจอร์ Shared screen
เคล็ดลับ: สแกน Mac เพื่อหาปัญหาประสิทธิภาพ, ไฟล์ขยะ, แอปอันตราย และภัยคุกคามด้านความปลอดภัย
ที่อาจทำให้ระบบมีปัญหาหรือทำงานช้า
Apple Event คืออะไร?
Apple events เป็นกลไกการสื่อสารระหว่างกระบวนการ (interprocess communication) แบบข้อความใน Mac OS ทำพุธครั้งแรกใน System 7 และรองรับโดยทุกเวอร์ชันของ classic Mac OS ตั้งแต่นั้นมา และ macOS Apple events อธิบาย "high-level" events เช่น "open document" หรือ "print file" ในขณะที่ OS รุ่นก่อนรองรับ basic events เท่านั้น คือ "click" และ "keypress" Apple events เป็นพื้นฐานของระบบ scripting ของ Mac OS คือ Open Scripting Architecture (ภาษาหลักคือ AppleScript)
จุดเริ่มต้นคือ dynamically-typed, extensible descriptor format เรียกว่า AEDesc ซึ่งเป็นแค่ OSType code ระบุชนิดข้อมูล พร้อมบล็อกข้อมูลที่ขึ้นอยู่กับชนิด ตัวอย่าง OSType code inte บ่งชี้ว่าข้อมูลเป็น four-byte signed integer ในรูปแบบ big-endian
นอกจาก predefined type codes สำหรับ common simple types ต่างๆ ยังมี predefined structured descriptor types 2 แบบ: AERecord ที่มี data type reco (record) และ AEList ด้วย type list (list หรือ array) โครงสร้างภายในมี AEDescs ที่ซ้อนกันแบบ recursive ในขณะที่ AERecord ยังเชื่อมโยงแต่ละ element กับ unique record field ID ซึ่งเป็น OSType Apple Event Manager 提供 API calls เพื่อสร้างโครงสร้างเหล่านี้ รวมถึง extract เนื้อหาและ query ชนิดของเนื้อหาที่พวกมันเก็บ
Apple Event Manager ยังรองรับ coercions ซึ่งแปลง AEDescs จากชนิดข้อมูลหนึ่งไปอีกชนิด นอกจาก standard coercions เช่นระหว่าง integer และ real types แอปพลิเคชันสามารถติดตั้ง coercion handler callbacks ของตัวเองได้ ซึ่งจัดการการแปลงไปและมาจาก custom data types
Apple event proper เป็น AERecord ที่มี fields ขึ้นอยู่กับวัตถุประสงค์ของ event นอกจากนี้ยังมี attributes (ซึ่งต่างจาก record fields ตอนนี้เรียกว่า parameters ของ event) จากชุดที่ predefined โดย Apple Event Manager เหล่านี้ระบุว่า event ควรทำอะไร (ผ่าน event class และ event ID) target address ที่ event จะถูกส่ง (อาจเป็นกระบวนการบนเครื่อง local หรือ remote machine) และตัวเลือกต่างๆ สำหรับการจัดการ
Remote machines เริ่มต้นต้องเชื่อมต่อผ่าน AppleTalk แต่ Mac OS 9 เพิ่มตัวเลือกสำหรับการเชื่อมต่อผ่าน TCP/IP
หลังส่ง Apple event ไปยัง target process กระบวนการส่งสามารถเลือกที่จะรับ reply Apple event ได้ Reply นี้อาจมีข้อมูลต่างๆ ที่คืนจาก target เกี่ยวกับการประมวลผล original event รวมถึง error code บ่งชี้ success/failure ข้อมูลที่ event ต้นทางขอ และ/หรือข้อมูลเหมาะสมอื่นๆ
Apple events เป็นพื้นฐานของ AppleEvent Object Model ซึ่งเป็นพื้นฐานของ OSA และ AppleScript ณ ปี 2016 official implementation ของ Apple Event Manager API พร้อมใน C และ descendants รวมถึง C++ Official bindings ยังมีสำหรับ Objective-C และ Swift ผ่าน Cocoa API Unofficial bindings ก็มีสำหรับภาษาอื่นๆ (ด้วยข้อจำกัดต่างกัน) รวมถึง Perl, UserTalk, Ruby และ Python
AE Server คืออะไร?
ถ้าคุณสังเกตเห็น AE Server รันในเบื้องหลังและคุณไม่คุ้นเคยกับฟีเจอร์นี้ คุณอาจถามตัวเองว่า: AE server บน Mac ของฉันคืออะไร?
AE Server หรือที่รู้จักว่า AppleEvents Server จัดการ Remote Apple Events บน macOS นี่ช่วยให้แอปพลิเคชันบน Mac อื่นส่ง AEs ไปยังคอมพิวเตอร์ local ได้ ตรวจสอบ System Preferences > Sharing ดูว่า Remote Apple Events เปิดอยู่หรือไม่ คุณสามารถเข้าถึง AEServer ในแผงสิทธิ์ Accessibility ของ macOS:
System Preferences > Security & Privacy > Privacy > Accessibility > AEServer
สิ่งนี้อาจดูซับซ้อน แต่จริงๆ แล้วมันง่ายกว่าที่คิด AppleScript ซึ่งเป็น built-in user-level scripting system บน macOS ช่วยให้ผู้ใช้ Mac ทำซ้ำงานอัตโนมัติ ขยายความสามารถของแอป และแม้แต่สร้างแอป standalone ด้วยภาษาที่ค่อนข้างง่าย AppleScript สื่อสารกับ macOS และแอปเป้าหมายแต่ละตัวโดยใช้ระบบ messaging เรียบง่ายชื่อ Apple Events
สิ่งที่ AE Server ทำคือ รับและ execute AppleScript และส่งไปยัง Mac อีกเครื่อง การส่ง Apple Script เพียงอย่างเดียวไม่พอที่จะทำงาน ควรได้รับการอนุมัติจากเครื่องรับผ่าน Remote Apple Events
Mac ของคุณสามารถรับ AEs จากแอปพลิเคชันที่รันบน Mac อื่นๆ ได้ นี่คืองานที่ทำบน macOS เช่น open this document หรือ print this document ด้วย Remote Apple Events เปิดอยู่ AppleScript ที่รันบน Mac อื่นสามารถควบคุม Mac local ของคุณจากระยะไกล หรือทำงาน เช่น พิมพ์เอกสารหรือเปิดแอปพลิเคชัน
สำหรับ Mac ที่รัน macOS Catalina AppleEvents และ AppleScripts ที่มุ่งเป้าโปรแกรมบนระบบ remote ควรได้รับการ authenticate โดย user เดียวกันบนระบบ remote นั้น มิฉะนั้น user จะได้รับ error procNotFound เพื่ออนุญาต remote AppleEvents ให้มุ่งเป้าแอปใน user session ใดๆ ให้รันคำสั่งต่อไปนี้ใน Terminal บน server:
defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
จากนั้น disable และ re-enable Remote Apple Events ใน System Preferences > Sharing
Apple Event Manager คืออะไร?
Apple Event Manager ซึ่งเป็นส่วนหนึ่งของ Open Scripting Architecture (OSA) ให้สิ่งอำนวยความสะดวกสำหรับแอปพลิเคชันในการส่งและตอบสนองต่อ Apple events และทำให้ operations และ data ของพวกเขาพร้อมสำหรับ AppleScript scripts สำหรับ API reference ที่เกี่ยวข้อง ดู Open Scripting Architecture Reference
Apple event เป็นประเภทของ interprocess message ที่สามารถระบุ operations และ data ที่ซับซ้อนได้ Apple events ให้ data transport และ event dispatching mechanism ที่ใช้ได้ภายในแอปเดียว ระหว่างแอปบนคอมพิวเตอร์เดียวกัน และระหว่างแอปบนคอมพิวเตอร์ต่างๆ ที่เชื่อมต่อเครือข่าย
แอปพลิเคชันมักใช้ Apple events เพื่อขอบริการและข้อมูลจากแอปอื่นๆ หรือให้บริการและข้อมูลตอบสนองต่อคำขอเหล่านี้ แอปพลิเคชันทั้งหมดที่นำเสนอ graphical interface ให้ผู้ใช้ผ่าน Human Interface Toolbox (Carbon applications) หรือ Cocoa application framework ควรสามารถตอบสนองได้ ถ้าเหมาะสม ต่อ events บางอย่างที่ส่งโดย Mac OS รวมถึง open application (หรือ launch), reopen, open documents, print documents, และ quit events
บางฟังก์ชัน Apple Event Manager ถูก mark ว่า thread safe — สำหรับฟังก์ชันอื่นๆ คุณควรเรียกเฉพาะบน main thread เท่านั้น
สำหรับ overview ของเทคโนโลยีที่ใช้ประโยชน์จาก Apple Event Manager ดู AppleScript Overview
สำหรับข้อมูลเกี่ยวกับการทำงานกับ Apple events รวมถึง events ที่ส่งโดย Mac OS ดู Responding to Apple Events ใน Apple Events Programming Guide สำหรับข้อมูลเกี่ยวกับ four-character codes แต่ละตัวที่ใช้ใน Apple events ดู AppleScript Terminology and Apple Event Codes Reference
Apple Event Manager ถูก implement โดย AE framework ซึ่งเป็น subframework ของ Core Services framework คุณไม่ link โดยตรงกับ AE framework — แทนที่จะเป็นเช่นนั้น คุณมัก link กับ Carbon framework ซึ่งรวมมันไว้ บาง AppleEvent definitions พร้อมใช้งานเฉพาะ clients ของ Carbon framework ซึ่งรวมถึง เช่น AEInteraction.h ใน HIToolbox framework
AE framework ไม่บังคับการเชื่อมต่อกับ window server นี่ช่วยให้ daemons และ startup items ที่ทำงานกับ Apple events ทำงานต่อไปได้ข้าม log outs
วิธีอนุญาต Remote Apple Events บน Mac
Mac ของคุณสามารถรับ Apple events จากแอปที่รันบนคอมพิวเตอร์อื่นๆ Apple event คืองานที่ทำบน Mac เช่น "open this document" หรือ "print"
ด้วย remote Apple events เปิดอยู่ AppleScript program ที่รันบน Mac อื่นสามารถโต้ตอบกับ Mac ของคุณได้ ตัวอย่าง โปรแกรมอาจเปิดและพิมพ์เอกสารที่อยู่บน Mac ของคุณ
- บน Mac ของคุณ เลือก Apple menu > System Preferences แล้วคลิก Sharing
- เลือก checkbox Remote Apple Events
- ระบุว่าใครส่ง events ได้:
- All users: ผู้ใช้คอมพิวเตอร์ของคุณทุกคน และใครก็ตามบนเครือข่ายของคุณ สามารถส่ง events ได้
- Only these users: คลิกปุ่ม Add แล้วเลือกใครส่ง events ได้ Users & Groups รวมผู้ใช้ทั้งหมดของคอมพิวเตอร์ของคุณ Network Users และ Network Groups รวมคนบนเครือข่ายของคุณ
วิธีเปิดใช้งาน AE Server บน Mac
เพื่อสั่ง Mac อื่นในเครือข่ายของคุณ คุณต้องการทั้ง AppleScripts และ Remote Apple Server เพื่อให้มันทำงาน AppleScripts มีคำแนะนำสำหรับงานที่คุณอยากให้ Mac อื่นทำ ในขณะที่ AE Server authorize และ execute คำแนะนำเหล่านั้น คุณสามารถบอก Mac อื่นให้ shutdown, เล่นเพลง, เยี่ยมชมเว็บไซต์ หรือแสดง alert ด้วยฟีเจอร์เหล่านี้
เพื่อเปิดใช้งาน Remote Apple Server หรือ AE Server บน Mac ของคุณ ทำตามคำแนะนำ:
- บน Mac ของคุณ หรือ Mac ที่คุณอยาก remote control คลิก Apple menu แล้วเลือก System Preferences
- คลิก Sharing แล้วติ๊ก Remote Apple Events checkbox
- ระบุผู้ใช้ที่สามารถส่ง events ได้:
- All users: ผู้ใช้บนคอมพิวเตอร์ของคุณทุกคน และใครก็ตามบนเครือข่าย สามารถส่ง events ไป Mac ของคุณ
- Only these users: คลิกปุ่ม Add (+) แล้วเลือกผู้ใช้ที่ส่ง events ได้ Users & Groups หมายถึงผู้ใช้ทั้งหมดบนคอมพิวเตอร์ของคุณ Network Users และ Network Groups หมายถึงคนบนเครือข่ายของคุณ
เมื่อคุณทำตามขั้นตอนเหล่านี้ ผู้ใช้ที่คุณระบุสามารถส่ง AppleScripts ไป Mac ของคุณได้แล้ว คุณยังต้องล็อกอินด้วย admin username และ password ของ Mac นั้นเพื่อ authenticate AppleScript
แต่ก่อนรัน AppleScript ทำความสะอาดคอมพิวเตอร์ก่อนด้วยซอฟต์แวร์ทำความสะอาด Mac เพื่อให้แน่ใจว่าคอมพิวเตอร์ทำงานที่ดีที่สุด
เหมือนฟีเจอร์ sharing ทั้งหมด คุณควรเปิดใช้งาน Remote Apple Events เฉพาะตอนที่คุณแน่ใจว่าต้องการ Third-party ที่เป็นอันตรายซึ่งรู้ IP address ของ Mac คุณ รวมถึง username และ password อาจขโมยข้อมูลจาก Mac ของคุณ hijack อุปกรณ์ หรือ override session ของคุณ ถ้าคุณไม่ต้องส่งคำแนะนำไป Mac อื่น 最好ปิดฟีเจอร์นี้ไว้ เพื่อปิดช่องทางการโจมตีที่ไม่จำเป็น
เพื่อปิดใช้งาน Remote Apple Server คุณสามารถปิดผ่านเมนู Sharing (Apple menu > System Preferences > Sharing > Remote Apple Events) หรือพิมพ์คำสั่งต่อไปนี้ด้วย Terminal:
/usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer
รีสตาร์ทคอมพิวเตอร์เพื่อให้การเปลี่ยนแปลงมีผล AE Server ของคุณควรปิดใช้งานแล้ว
วิธีเขียน AppleScripts
การเปิดใช้งาน Remote Apple Server แค่ส่วนหนึ่งของสมการ ต่อไป คุณต้องเขียน AppleScripts ด้วยคำแนะนำว่าคุณอยากให้ Mac ทำอะไร สำหรับนี้ คุณต้องใช้ AppleScript Editor หรือ Script Editor ภายใต้ Finder > Utilities เมื่อ editor เปิดแล้ว คุณสามารถเขียน script ได้โดยคลิก File > New
นี่คือ scripts บางอย่างที่คุณลองได้:
- Put Mac to Sleep
tell application "Finder" of machine "eppc://IP Address of the target Mac″
sleep
end tell
- Open iTunes
iTunestell application "iTunes" of machine "eppc://IP Address of the target Mac"
play
end tell
- Quit iTunes
tell application "iTunes" of machine "eppc://IP Address of the target Mac"
stop
end tell
- Launch Safari
tell application "Safari" of machine "eppc://IP Address of the target Mac"
activate
end tell
- Quit Safari
tell application "Safari" of machine "eppc://IP Address of the target Mac"
quit
end tell
เมื่อคุณสร้าง AppleScripts เหล่านี้แล้ว คุณสามารถบันทึกไว้บน Mac และรันเมื่อต้องการ คุณจะต้องใส่ username และ password ของ target Mac เพื่อ execute AppleScript