เป็นไปได้หรือไม่ที่จะกำหนดค่า Internet Sharing เพื่อให้คอมพิวเตอร์เข้าสู่โหมดสลีป


8

TL; DR: การแชร์อินเทอร์เน็ตทำให้ Mac ของฉันไม่หลับ ฉันจำเป็นต้องนอนหลับระบบด้วยตนเองเป็นประจำ ฉันต้องการวิธีกำหนดค่าการแชร์อินเทอร์เน็ตเพื่อหยุดการป้องกันการนอนหลับ

ฉันมี iMac ที่บ้านในห้องนอนของฉันไกลจากเราเตอร์ของฉันและฉันไม่สามารถใช้ไร้สายได้และการครอบคลุม 3G ของที่นี่แย่มากดังนั้นฉันจึงเปิดใช้งานการแชร์อินเทอร์เน็ตเพื่อให้สามารถใช้ iPhone / iPad ที่เชื่อมต่อกับราง iMac

ที่ทำงานฉันอยู่ในเครือข่ายขององค์กรและไร้สายค่อนข้างง่อยและ จำกัด เกินไปดังนั้นฉันจึงเปิดใช้งาน Internet Sharing บน MacBook Pro ของฉันที่นั่นด้วยดังนั้น iPhone ของฉันจึงสามารถเข้าถึงสิ่งของภายในได้

ปัญหาคือ: เมื่อฉันโดน + + (หรือ & gt; Sleep) ไม่ว่าคอมพิวเตอร์จะเข้าสู่โหมดสลีปตามต้องการ นั่นคือถ้าฉันปิดการใช้งานอินเทอร์เน็ตร่วมกันก่อน

ที่บ้านฉันต้องการให้คอมพิวเตอร์นอนในขณะที่ฉันหลับ (ประหยัดพลังงาน + เงียบกว่า) และที่ทำงานเมื่อกลับบ้านฉันก็อยากนอนด้วยดังนั้นฉันไม่ต้องปิดแอปที่เชื่อมต่อทั้งหมด (Adium, Colloquy ฯลฯ ) และ เปิดอีกครั้งในวันถัดไป

ฉันจะกำหนดค่าได้อย่างไร pmset หรือการแชร์อินเทอร์เน็ตเพื่อให้คอมพิวเตอร์ของฉันเข้าสู่โหมดสลีปโดยไม่มีปัญหา

หมายเหตุ: ฉันใช้ไปแล้ว pmset เพื่อตรวจสอบว่ามีเหตุผลอื่น ๆ และการละเมิด pid ตลอดเวลา com.apple.InternetSharing.

แก้ไข: ฉันรู้ว่าการปิดคอมพิวเตอร์จะทำให้ไม่สามารถใช้อินเทอร์เน็ตร่วมกันได้ ฉันต้องการให้โหมดสลีปนั้นสมบูรณ์และฉันต้องการให้ Internet Sharing กลับมาทำงานอีกครั้งเฉพาะเมื่อคอมพิวเตอร์ตื่น


ผลลัพธ์ของฉันไปยังคำสั่งด้านบนคือ DenySystemSleep. แม้ว่าฉันจะพบสตริง แต่ฉันก็ไม่สามารถใช้งานได้ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat เพื่อเปลี่ยนพฤติกรรม คุณช่วยขยายคำตอบหน่อยได้ไหม?
Irae Carvalho

ตัวอย่างเช่นคุณต้องการบางสิ่งที่จะปิดการแบ่งปันแล้วนอนหลับ และอย่างอื่นที่จะเปิดใช้งานร่วมกันโดยอัตโนมัติเมื่อปลุก
GEdgar

แน่นอน! นี่คือสิ่งที่ฉันต้องการ
Irae Carvalho

คำตอบ:


7

ฉันได้ทดลองใช้ ControlPlane เพื่อให้บรรลุสิ่งที่คุณต้องการ ผลลัพธ์เบื้องต้นของฉันคือมันจะทำสิ่งที่คุณต้องการ

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

หนึ่งใน 'แหล่งหลักฐาน' คือเหตุการณ์สลีป / ปลุก ดังนั้นฉันจึงกำหนดค่ากฎเพื่อให้เกิดเหตุการณ์สลีป (เช่นคุณคลิกสลีปในเมนู Apple) บริบท 'เวลาพักเครื่อง' จะถูกเรียกใช้ และสำหรับบริบทนี้ฉันได้ใช้การกระทำ 'ToggleInternetSharing' เพื่อปิด

หลังจากคลิกที่ Sleep ฉันได้รับการแจ้งเตือนว่า Internet Sharing กำลังถูกปิดและหลังจากนั้นไม่นาน (ดูเหมือนจะตลอดไป แต่อาจเป็นเพียง 10 หรือ 20 วินาที) ที่ Mac เข้าสู่โหมดสลีป

และฉันมีกฎข้อที่สองเพื่อให้เกิดเหตุการณ์ปลุกบริบท 'Waking Up' จะถูกเรียกใช้และสิ่งนี้มีการดำเนินการเพื่อตั้งค่า 'ToggleInternetSharing'

กฎและการกระทำของฉัน:

enter image description here enter image description here

ลองมัน!

นี่เป็นเพียงการขีดข่วนพื้นผิวของ ControlPlane ที่สามารถทำได้


แอพที่น่าทึ่ง! มันใช้งานได้เหมือนมีเสน่ห์! ขอบคุณมากสำหรับคำอธิบายโดยละเอียด นอกจากนี้ฉันตรวจสอบด้วยว่าแอพนั้นฟรีและโอเพ่นซอร์สอย่างสมบูรณ์ สำหรับฉันนี้นับเป็นบวกในความโปรดปรานของการใช้มัน =)
Irae Carvalho

ฉันรู้จัก ControlPlane มาระยะหนึ่งแล้ว แต่ไม่ได้ใช้ คำถามของคุณเป็นเหตุผลที่ยอดเยี่ยมในการสำรวจความสามารถของมัน - ขอบคุณสำหรับสิ่งนั้น
Gilby

+1 ที่นี่ ... ด้วย OS X Mavericks v10.9.4 และยังคงทำงานเหมือนมีเสน่ห์ ขอขอบคุณ
gmo

ดูเหมือนว่าเป็นแอปที่ยอดเยี่ยม! น่าเสียดายที่การสลับการใช้อินเทอร์เน็ตร่วมกันไม่ได้ทำงานใน El Capitan ในช่วงเวลานั้น (อาจไม่ใช่ในเซียร่า)
Winterflags

2

หากคุณใช้งาน Lion InternetSharing ล็อคอย่างชัดเจน SystemSleep. มองไปที่:

strings /usr/libexec/InternetSharing | grep SystemSleep

ผลลัพธ์ของคำสั่งนี้:     DenySystemSleep เป็นข้อพิสูจน์ว่า InternetSharing คือ ตั้งใจปิดกั้นเคอร์เนลเป็นไปได้ที่จะเข้าสู่โหมดสลีป มีคำอธิบายง่ายๆเกี่ยวกับการป้องกันนี้: ครั้งหนึ่ง InternetSharing ถูกไล่ออกลูกค้าของ Mac เครื่องนี้อาจใช้งานมัน เป็นเราเตอร์ในการเข้าถึงอินเทอร์เน็ต สิ่งต่างๆมากมายอาจเป็นไปโดยอัตโนมัติ ทำงานบนสุดของการเชื่อมต่ออินเทอร์เน็ตนี้โดยไม่มีความรู้ คนที่อยู่ด้านหน้าของหน้าจอ

การเชื่อมโยงนี้ควรถูกทำลายโดยผู้ดูแลระบบที่ เริ่มต้นและไม่ใช่พฤติกรรมของระบบอัตโนมัติ

นี่เป็นพฤติกรรมที่ปลอดภัย

ดังนั้นวิธีการที่ถูกต้องเพื่อให้แน่ใจว่า InternetSharing ปิดเมื่อ Mac sleep คือการกำหนดตารางเวลา 4 กิจกรรมตามลำดับต่อไปนี้:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

นี่คือตารางเวลาที่เสนอโดย ControlPlane.


ผลลัพธ์ของฉันไปยังคำสั่งด้านบนคือ DenySystemSleep. แม้ว่าฉันจะพบสตริง แต่ฉันก็ไม่สามารถใช้งานได้ sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat เพื่อเปลี่ยนพฤติกรรม คุณช่วยขยายคำตอบหน่อยได้ไหม?
Irae Carvalho

1
ฉันเชื่อว่า @ daniel-azuelos หมายถึงแสดงให้เห็นว่า InternetSharing รับผิดชอบ คำสั่งที่เขาแนะนำให้ค้นหาผ่านไบนารี InternetSharing และค้นหาสตริงที่เกี่ยวข้องกับการบล็อกการนอนหลับ สิ่งนี้จะช่วยยืนยันสิ่งที่น่าจะเป็นสาเหตุของการปิดกั้นการนอนหลับ แต่ไม่ใช่สำหรับพฤติกรรมที่คุณต้องการ
Graham Miln

1

การใช้งาน Mac ที่เปิดใช้งาน Internet Sharing นั้นไม่สามารถใช้งานได้จริง

คุณลักษณะ Internet Sharing เป็นรุ่นซอฟต์แวร์ของเราเตอร์: ทำหน้าที่เป็นเกตเวย์สู่อินเทอร์เน็ตเซิร์ฟเวอร์ DHCP ไฟร์วอลล์และตัวส่งต่อ DNS ฟังก์ชั่นมันเหมือนกับเราเตอร์ที่คุณสามารถซื้อได้จากร้านค้าปลีกในพื้นที่ของคุณ และได้ฟรี

อย่างไรก็ตามมีข้อเสียอย่างใหญ่หลวง: หาก Mac ที่ทำหน้าที่เป็นเกตเวย์ถูกปิดหรือหลับไปเครื่องอื่น ๆ จะไม่สามารถออนไลน์ได้

นี่คือเหตุผลที่ Internet Sharing ป้องกันไม่ให้เครื่องของคุณเข้าสู่โหมดสลีป

แต่ฉันสามารถแชร์ไฟล์ / iTunes / หน้าจอเมื่อมันหลับ

ใช่คุณสามารถแบ่งปันสิ่งเหล่านั้นและอื่น ๆ อย่างไรก็ตามเมื่อคุณไปเข้าถึงไฟล์เหล่านั้นเครื่อง Mac ของคุณ ตื่น . สิ่งนี้เรียกว่า Wake On Demand และพร็อกซี Bonjour Sleep .

เมื่อ Mac ของคุณนอนหลับก็จะทำให้การเชื่อมต่อเครือข่ายค่อนข้าง "สด" มันกำลังรอฟัง "แพ็คเก็ต" ของ Bonjour เพื่อปลุกคอมพิวเตอร์ สิ่งนี้จัดการโดยอุปกรณ์สนามบิน (อะแดปเตอร์เครือข่าย) เอง ไม่ใช่คอมพิวเตอร์ เมื่อได้รับ "wake packet" Mac จะตื่นขึ้นมาและคุณสามารถเริ่มต้นการแบ่งปันทรัพยากรของคุณได้

สวัสดี 1 เป็นเซอร์วิสการค้นหาการกำหนดค่าศูนย์ที่ใช้ บริการชื่อโดเมนแบบหลายผู้รับ (mDNS) ซึ่งเป็น UDP 2 โพรโทคอล (มันออกอากาศและไม่สามารถกำหนดเส้นทางได้) ซึ่งเป็นการส่งผ่านข้อความขนาดเล็กไร้สัญชาติและมีขนาดเล็กที่สุด

โดยพื้นฐานแล้ว UDP (เป็นพื้นฐานของ Bonjour) นั้นสมบูรณ์แบบในการส่งข้อความไปยังคอมพิวเตอร์ของคุณเพื่อพูดว่า "Wake up!"

ในการเรียกดูอินเทอร์เน็ต (ใช้คอมพิวเตอร์หลังเกตเวย์ Mac) คุณจะต้องใช้โปรโตคอลสแต็คแบบเต็มซึ่งจะขึ้นอยู่กับ TCP . มันจะต้องมี DHCP, NAT, ไฟร์วอลล์ ฯลฯ ซึ่งหมายความว่าจะต้องหมุนบริการทั้งหมดเหล่านั้นก่อนที่จะอนุญาตให้ลูกค้าเรียกดูเว็บ วิธีนี้จะทำให้เกิดความล่าช้ามาก

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


1 Bonjour คือการนำระบบเครือข่ายศูนย์การกำหนดค่า (zeroconf) ของ Apple ซึ่งเป็นกลุ่มเทคโนโลยีที่รวมถึงการค้นหาบริการการกำหนดที่อยู่และการแก้ไขชื่อโฮสต์ Bonjour ค้นหาอุปกรณ์เช่นเครื่องพิมพ์คอมพิวเตอร์อื่น ๆ และบริการที่อุปกรณ์เหล่านั้นนำเสนอในเครือข่ายท้องถิ่นโดยใช้บริการบันทึก multicast Domain Name System (mDNS)

2 UDP เป็นโปรโตคอลการขนส่งเลเยอร์ข้อความที่น้อยที่สุด UDP ไม่ให้การรับประกันกับโปรโตคอลชั้นบนสำหรับการส่งข้อความและเลเยอร์ UDP จะไม่มีสถานะของข้อความ UDP ที่ส่งครั้งเดียว มันง่ายเหมาะสำหรับการบูตสแตรปหรือวัตถุประสงค์อื่นโดยไม่มีโปรโตคอลสแต็กเต็มเช่น DHCP และ Trivial File Transfer Protocol


อัลลันขอบคุณสำหรับความเข้าใจของคุณ ในกรณีของฉันฉันใช้ Internet Sharing เพียงเพราะ MBP ที่ฉันเชื่อมต่อกับ iMac ของฉันผ่านทาง Thunderbolt Bridge เพื่อใช้ประโยชน์จากอีเทอร์เน็ต (100 Mbit แทน ~ 30 Mbit Wifi) ฉันไม่ได้ใช้ Internet Sharing เป็น "เราเตอร์" ดังนั้นจึงเป็นประโยชน์สำหรับฉันที่จะหาวิธีผ่านสคริปต์หรืออัตโนมัติเพื่อเปิด / ปิดการแชร์อินเทอร์เน็ต (หรือบังคับให้หลับ)
Winterflags

แบ่งปันอินเทอร์เน็ต คือ เปลี่ยน Mac ของคุณให้เป็นเราเตอร์ - นั่นคือฟังก์ชั่นหลักของการแบ่งปันอินเทอร์เน็ต
Allan

ฉันเข้าใจ แต่ฉันไม่ได้พูดถึงเรื่องนี้ในแง่เทคนิค ฉันใช้การใช้อินเทอร์เน็ตร่วมกันเฉพาะเมื่อเชื่อมต่อ MBP ผ่าน Thunderbolt Bridge ไปยัง iMac และดังนั้นจึงไม่มีเหตุผลที่ iMac จะไม่เข้าสู่โหมดสลีปไม่ว่าจะเชื่อมต่อหรือไม่ ดังนั้นมองหาวิธีแก้ปัญหาอาจเกี่ยวข้องกับการเขียนสคริปต์
Winterflags

1
คุณจะไม่ลบล้างการแชร์อินเทอร์เน็ตไม่ให้ MBP ของคุณเข้าสู่โหมดสลีป แต่ถ้าคุณต้องการดู "วิธีแก้ปัญหา" ที่นี่: apple.stackexchange.com/questions/2488/...
Allan

ขอบคุณ - ฉันได้ลองคำตอบเหล่านั้นแล้วและไม่สามารถทำงานกับ El Capitan ได้ (อาจเป็นเพราะ SIP) แต่จะต้องตรวจสอบเพิ่มเติม
Winterflags

0

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

อย่างไรก็ตามมีทางเลือกที่ดีที่คุณควรดู แทนที่จะนอนทั้งตัวให้เช็คเอาต์จอแสดงผลหลับ System Preferences -> Energy Saver. ในกรณีใช้งานของฉันฉันมีการตั้งค่ามุมร้อน (ซึ่งคุณสามารถเปิดใช้งานได้ System Preferences -> Desktop & Screen Saver -> Screen Saver ) เพื่อที่เมื่อฉันกำลังจะไปทานอาหารกลางวันและต้องล็อคหน้าจอของฉันและ / หรือแค่วางจอแสดงผลให้หลับฉันก็ย้ายไปที่มุมล่างซ้าย ทำงานได้ดีสำหรับฉันคอมพิวเตอร์ไม่ได้กลับมาทำงานตามปกติในโหมดสลีปและกระบวนการที่ใช้เวลานาน ๆ ที่ฉันลืมไม่ได้ถูกขัดจังหวะ ในกรณีของคุณซึ่งหมายความว่าฮอตสปอต WiFi ของคุณจะไม่ลดลง


1
นี่มีประโยชน์มากจริง ๆ ฉันใช้ & lt; kbd & gt; ^ & lt; / kbd & gt; + & lt; kbd & gt; ⇧ & lt; / kbd & gt; + & lt; kbd & gt; ทำเช่นนั้น แต่มันไม่ใช่สิ่งที่ฉันต้องการ ฉันไม่ต้องการใช้อินเทอร์เน็ตร่วมกันในขณะที่คอมพิวเตอร์หลับ ฉันต้องการคอมพิวเตอร์ให้นอนหลับจริง ๆ และแม้กระทั่งเปลี่ยนการแชร์และปิด wifi จะแก้ไขคำถามของฉันเพื่อชี้แจง ขอบคุณต่อไป =)
Irae Carvalho

0

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

คู่มือผู้ใช้จะอธิบายถึงวิธีการตั้งค่านี้:

การไม่ใช้งานที่ดีขึ้นจะทำให้เกิดการนอนหลับ

Power Manager เสนอทางเลือกอื่น เราให้บริการไม่มีการใช้งาน   เรียกการนอนหลับ การไม่ใช้งานวัดจากเวลาที่ไม่ได้ใช้งาน   การไม่ใช้งานเป็นการวัดที่ง่ายกว่าซึ่งกำหนดโดยผู้ใช้เท่านั้น   กิจกรรม.

อีกวิธีหนึ่งสูตรต่อไปนี้แสดงวิธีการสร้างเหตุการณ์ Power Manager ทำให้ Mac ของคุณเข้าสู่โหมดสลีปหลังจากไม่ได้ใช้งานเป็นระยะเวลาหนึ่ง .

Power Manager: Power off after inactivity task

คำเตือน: ฉันทำงานให้กับ บริษัท ที่พัฒนา Power Manager


ไม่ได้ผลสำหรับฉันเมื่อเปิดใช้งาน Internet Sharing อยู่ -1 สำหรับการสูญเสียหนึ่งชั่วโมงในชีวิตของฉัน
Winterflags

คุณต้องการประสบความสำเร็จอะไรและอะไรที่ไม่ได้ผลสำหรับคุณ
Graham Miln

เช่นเดียวกับ OP และคำตอบของคุณ ฉันกำหนดค่าการไม่ใช้งานโหมดสลีปโดยหวังว่าจะเป็น 'โหมดสลีป' โดยเปิดใช้งานการแชร์อินเทอร์เน็ต ค่ากำหนดของระบบ & gt; ที่ใช้ร่วมกัน . มันไม่ได้ แต่มันจะเปิดใช้งานโหมดสลีปถ้า Internet Sharing ถูกปิดใช้งาน
Winterflags

1
Power Manager ออกคำขอ sleep ไปยัง macOS หากคุณกำลังมีปัญหาเกี่ยวกับการนอนหลับตามที่คำถามอื่นบ่งบอกว่าปัญหาการนอนหลับเดียวกันจะส่งผลต่อคำขอการนอนหลับที่ออกโดยแอปพลิเคชันของบุคคลที่สาม แน่นอนว่าฉันอาจเข้าใจผิดหรือเข้าใจผิดเกี่ยวกับสถานการณ์ของคุณ ฉันหวังว่าคุณจะสามารถหาทางออกได้
Graham Miln

1
macOS จะหยุดทำงานเสมอเมื่อถูกขอให้เข้านอน - เครื่องมือค้นหา & gt; Apple (เมนู) & gt; นอน . การนอนไม่หลับเป็นพฤติกรรมที่แนะนำปัญหาให้กับ Mac
Graham Miln
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.