Czy można skonfigurować Udostępnianie Internetu, aby komputer spał?

9

TL; DR: Udostępnianie Internetu uniemożliwia komputerowi Mac spanie. Muszę regularnie ręcznie spać system. Chcę sposób skonfigurować Udostępnianie Internetu, aby przestał zapobiegać zasypianiu.

Mam iMaca w domu w mojej sypialni, zbyt daleko od routera, i nie mogę korzystać z sieci bezprzewodowej, a także zasięg 3G jest tutaj okropny, więc włączyłem Udostępnianie Internetu, dzięki czemu mogę korzystać z mojego iPhone / iPad podłączonego przez mój iMac.

W pracy pracuję w sieci firmowej, a sieć bezprzewodowa jest nieco kiepska i zbyt restrykcyjna, więc włączyłem także udostępnianie Internetu na moim MacBooku Pro, aby mój iPhone mógł uzyskać dostęp do wewnętrznych elementów.

Problem polega na tym: kiedy nacisnę + + (lub > Uśpij), żaden komputer nie przejdzie w stan uśpienia zgodnie z życzeniem; to znaczy, chyba że najpierw wyłączę Udostępnianie Internetu.

W domu chcę, aby komputer spał podczas snu (oszczędza energię + więcej ciszy), aw pracy, gdy wracam do domu, chcę też spać, więc nie muszę zamykać wszystkich podłączonych aplikacji (Adium, Colloquy itp.) I ponownie otwórz następnego dnia.

Jak mogę skonfigurować pmsetlub udostępnić Internet, aby spać komputer bez napotkania tego problemu?

Uwaga: Już wcześniej pmsetsprawdzałem, czy istnieją inne powody, a przestępstwo pidjest zawsze com.apple.InternetSharing.

Edycja: Zdaję sobie sprawę, że uśpienie komputera uniemożliwi korzystanie z Udostępniania Internetu. Chcę, aby całkowicie spał i chcę, aby udostępnianie Internetu było ponownie włączone tylko wtedy, gdy komputer się budzi.

Irae Carvalho
źródło
Moje dane wyjściowe do powyższego polecenia to DenySystemSleep. Mimo że znalazłem ciąg, nie byłem w stanie sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natzmienić zachowania. Czy możesz rozwinąć swoją odpowiedź?
Irae Carvalho
Na przykład chcesz czegoś, co wyłączy udostępnianie, a potem pójdzie spać. I coś jeszcze, co automatycznie, po przebudzeniu, włącza udostępnianie.
GEdgar
Dokładnie! Właśnie tego potrzebuję
Irae Carvalho

Odpowiedzi:

8

Eksperymentowałem z użyciem ControlPlane, aby osiągnąć to, czego chcesz. Mój wstępny wynik jest taki, że zrobi to, co chcesz.

ControlPlane wykrywa zmiany w systemie zwane „źródłami dowodów”. Zmiany są oceniane za pomocą „reguł”, które definiują zmianę w „kontekście”. Z każdym kontekstem powiązane są „działania”.

Jednym z „źródeł dowodów” jest zdarzenie snu / czuwania. Skonfigurowałem więc regułę, aby podczas zdarzenia uśpienia (np. Kliknąłeś uśpienie w menu Apple), uruchamiany jest kontekst „Czas uśpienia”. I w tym kontekście użyłem akcji „ToggleInternetSharing” do wyłączenia.

Po kliknięciu opcji Uśpij dostaję alert informujący, że Udostępnianie Internetu jest wyłączone, a po chwili (wydaje się, że trwa wieczność, ale prawdopodobnie to tylko 10 lub 20 sekund) komputer Mac idzie spać.

I mam drugą zasadę, aby przy zdarzeniu wake wyzwalany był kontekst „Waking Up”, który ma akcję, aby włączyć „ToggleInternetSharing”.

Moje zasady i działania:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Spróbuj!

To tylko zarysowanie powierzchni tego, co może zrobić ControlPlane.

Gilby
źródło
Niesamowita aplikacja! Działa jak urok! Wielkie dzięki za szczegółowe wyjaśnienie. Ponadto sprawdziłem, czy aplikacja jest całkowicie darmowa i ma otwarte oprogramowanie. Dla mnie liczy się to jako plus za korzystaniem z niego =)
Irae Carvalho
Od pewnego czasu wiem o ControlPlane, ale go nie używałem. Twoje pytanie było doskonałym powodem do zbadania jego możliwości - dzięki za to.
Gilby,
+1 tutaj ... Z OS X Mavericks v10.9.4i nadal działa jak urok. Dziękuję
gmo,
Wygląda na świetną aplikację! Niestety przełączanie Udostępnianie Internetu na razie nie działa w El Capitan (prawdopodobnie nie w Sierra).
Winterflags
2

Jeśli używasz Lion, InternetSharingwyraźnie blokuje SystemSleep. Spójrz na:

strings /usr/libexec/InternetSharing | grep SystemSleep

Wynik działania tej komendy: DenySystemSleep jest dowodem, który InternetSharingcelowo blokuje możliwość przejścia do trybu uśpienia przez jądro. Istnieje proste wyjaśnienie tej ochrony: po uruchomieniu InternetSharingklienci tego komputera Mac mogą używać go jako routera w celu uzyskania dostępu do Internetu. Wiele rzeczy może być automatycznie uruchomionych na połączeniu internetowym bez wiedzy osoby stojącej przed ekranem.

Ten związek powinien przerwać tylko administrator systemu, który go uruchomił, a nie automatyczne zachowanie systemu.

To jest bezpieczne zachowanie.

Stąd poprawna metoda upewnienia się, że InternetSharingjest wyłączona, gdy uśpienie Maca ma zaplanować 4 zdarzenia w następującej kolejności:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Jest to harmonogram oferowany przez ControlPlane.

dan
źródło
Moje dane wyjściowe do powyższego polecenia to DenySystemSleep. Mimo że znalazłem ciąg, nie byłem w stanie sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natzmienić zachowania. Czy możesz rozwinąć swoją odpowiedź?
Irae Carvalho
1
Uważam, że @ Daniel-Azuelos oznacza wykazanie, że InternetSharing jest odpowiedzialny. Polecenie, które sugeruje, przeszukuje plik binarny InternetSharing i znajduje ciąg związany z blokowaniem snu. Pomaga to potwierdzić, co prawdopodobnie będzie odpowiedzialne za blokowanie snu, ale nie za uzyskanie pożądanego zachowania.
Graham Miln
1

Nie jest praktyczne, aby komputer Mac z włączoną funkcją udostępniania Internetu mógł iść spać.

Funkcja udostępniania Internetu to wersja oprogramowania routera: Działa jako brama do Internetu, serwer DHCP, zapora ogniowa i usługa przesyłania dalej DNS. Działa podobnie jak routery, które można kupić od lokalnego sprzedawcy; i to za darmo.

Istnieje jednak ogromna wada: jeśli komputer Mac działający jako brama jest wyłączony lub śpi, inne komputery nie mogą się połączyć z Internetem.

Właśnie dlatego Udostępnianie Internetu zapobiega przejściu komputera w tryb uśpienia.

Ale mogę udostępniać pliki / iTunes / Screen, gdy śpi

Tak, możesz udostępniać wszystkie te rzeczy i nie tylko. Jednak po przejściu do dostępu do tych plików komputer Mac budzi się . Nazywa się to Wake On Demand i proxy Sleep Bonjour .

Gdy komputer Mac śpi, utrzymuje połączenie sieciowe „na żywo”; nasłuchuje „pakietów” Bonjour, aby obudzić komputer. Zajmuje się tym samo urządzenie Airport (karta sieciowa); nie komputer. Po otrzymaniu „pakietu pobudki” komputer Mac budzi się i możesz rozpocząć udostępnianie zasobów.

Bonjour 1 to usługa odnajdywania zerowej konfiguracji, która korzysta z multiemisji Domain Name Services (mDNS), który jest protokołem UDP 2 (jest rozgłaszany i nie może być routowany), który jest małym, bezstanowym i minimalnym transportem zorientowanym na wiadomości.

Zasadniczo, UDP (na czym opiera się Bonjour) idealnie nadaje się do wysłania do komputera wiadomości z informacją „Obudź się!”

Aby przeglądać Internt (użyj komputera za bramą Mac), potrzebujesz pełnego stosu protokołów opartego na TCP . Będzie potrzebował DHCP, NAT, zapory ogniowej itp., Co oznacza, że ​​będzie musiał rozkręcić wszystkie te usługi, zanim klienci będą mogli przeglądać sieć. Spowoduje to znaczne opóźnienia.

Wracając do bardziej pragmatycznego podejścia, jeśli Twój komputer Mac poszedłby spać i działał jako brama, albo nigdy nie poszedłby spać, albo byłby w górze i na dole jak ktoś z poważnym przypadkiem bezsenności.


1 Bonjour to implementacja Apple sieci zero-konfiguracyjnej (zeroconf), grupy technologii obejmującej wykrywanie usług, przydzielanie adresów i rozpoznawanie nazw hostów. Bonjour lokalizuje urządzenia, takie jak drukarki, inne komputery, oraz usługi oferowane przez te urządzenia w sieci lokalnej za pomocą rekordów usług multastast Domain Name System (mDNS).

2 UDP to minimalny protokół warstwy transportowej zorientowany na wiadomości. UDP nie udziela żadnych gwarancji protokołowi wyższej warstwy na dostarczenie wiadomości, a warstwa UDP nie zachowuje stanu wiadomości UDP po wysłaniu. Jest prosty, nadaje się do ładowania systemu lub innych celów bez pełnego stosu protokołów, takich jak DHCP i Trivial File Transfer Protocol.

Allan
źródło
Allan, dziękuję za twój wgląd. W moim szczególnym przypadku korzystam z Udostępniania Internetu tylko ze względu na MBP, który łączę z moim komputerem iMac za pośrednictwem Thunderbolt Bridge, aby zyskać przewagę Ethernet (100 Mbit zamiast ~ 30 Mbit Wi-Fi). Nie używam udostępniania Internetu jako „routera”. Dlatego byłoby dla mnie praktyczne znaleźć sposób za pomocą skryptu lub automatyzacji, aby włączyć / wyłączyć Udostępnianie Internetu (lub wymusić uśpienie).
Winterflags,
Udostępnianie Internetu jest obrócenie komputera Mac do routera - to funkcja rdzeń, co robi do udostępniania połączenia internetowego.
Allan
Rozumiem, ale nie mówię o tym technicznie. Korzystam z Udostępniania Internetu tylko podczas podłączania MBP przez Thunderbolt Bridge do iMaca, dlatego nie ma sensu, aby iMac nigdy nie zasypiał bez względu na to, czy jest podłączony. Dlatego szukam obejścia, być może obejmującego skrypty.
Winterflags
1
Cóż, nie zastąpisz Udostępniania Internetu, uniemożliwiając przejście MBP w tryb
Allan
Dzięki - próbowałem już tych odpowiedzi i nie byłem w stanie zmusić ich do współpracy z El Capitan (być może z powodu SIP), ale będę musiał zbadać dalej.
Winterflags
1

Re. ControlPlane, to działa dla mnie ...

Dwa konteksty (oba identyczne) Zasady Trzy akcje

CharlesB
źródło
0

Gdy jednostka zarządzania energią komputera uśpi urządzenie, przechodzi w tryb niskiego zużycia energii. Przeciętny kod wykonywalny na komputerze nie jest uruchamiany w normalny sposób: komputer utrzymuje wystarczającą moc, aby odświeżyć pamięć (w razie potrzeby) i niewiele więcej. Podczas gdy komputer śpi, nie będziesz mógł brać udziału w komputerach ogólnego przeznaczenia.

Istnieje jednak dobra alternatywa, na którą powinieneś spojrzeć. Zamiast spać całą jednostkę, sprawdź wyświetlacz uśpienia System Preferences -> Energy Saver. W moim przypadku mam konfigurację z gorącym rogiem (którą możesz włączyć System Preferences -> Desktop & Screen Saver -> Screen Saver), więc kiedy idę na lunch i muszę zablokować ekran i / lub po prostu uśpić wyświetlacz, przechodzę do dołu -lewy róg. Działa dla mnie dobrze, komputer nie wraca z trybu uśpienia, a wszelkie długotrwałe procesy, o których zapomniałem, nie są przerywane. W twoim przypadku oznacza to, że Twój hotspot Wi-Fi nie zostanie upuszczony.

zwerdlds
źródło
1
Jest to rzeczywiście bardzo przydatne, używam do tego <kbd> ^ </kbd> + <kbd> ⇧ </kbd> + <kbd> ⏏ </kbd>. Ale nie tego chcę. Nie potrzebuję udostępniania Internetu, gdy komputer śpi. Potrzebuję komputera, aby naprawdę spać, a nawet wyłączyć udostępnianie i Wi-Fi. Przeredaguję moje pytanie, aby wyjaśnić. W każdym razie dzięki =)
Irae Carvalho,
0

Za pomocą programu Power Manager można uśpić komputer Mac po okresach bezczynności. Power Manager może zastąpić procesy i aplikacje blokujące bezczynny sen, w tym Udostępnianie Internetu.

Podręcznik użytkownika pokazuje, jak to skonfigurować:

Wyzwalany sen o lepszej bezczynności

Power Manager oferuje alternatywę. Zapewniamy sen wywołany brakiem aktywności. Bezczynność mierzy się inaczej niż czas bezczynności; bezczynność jest prostszym pomiarem określanym wyłącznie na podstawie aktywności użytkownika.

Alternatywnie poniższy przepis pokazuje, jak utworzyć zdarzenie Power Manager, aby uśpić komputer Mac po okresie bezczynności .

Power Manager: Wyłącz po zadaniu braku aktywności

Oświadczenie: Pracuję dla firmy, która opracowuje Power Managera.

Graham Miln
źródło
Nie działało dla mnie przy aktywnym udostępnianiu Internetu. -1 za marnowanie godziny mojego życia.
Winterflags
Co chciałeś osiągnąć, a co nie zadziałało?
Graham Miln,
To samo co OP i twoja odpowiedź. Skonfigurowałem uśpienie nieaktywne, mając nadzieję, że „wymusi uśpienie” z włączonym udostępnianiem internetowym w Preferencjach systemowych> Udostępnianie . Nie zrobił tego, ale aktywowałby tryb uśpienia, gdyby Udostępnianie Internetu zostało wyłączone.
Winterflags
1
Power Manager wysyła żądanie uśpienia do macOS. Jeśli masz problemy ze snem, jak wskazuje drugie pytanie, te same problemy ze snem będą również wpływać na żądania snu wydawane przez aplikacje innych firm. Oczywiście mogę się mylić lub po prostu pomylić, rozumiejąc twoją sytuację. Mam nadzieję, że znajdziesz rozwiązanie.
Graham Miln,
1
macOS zawsze będzie spał, gdy zostanie wyraźnie poproszony - Finder> Apple (menu)> Sleep . Brak snu to zachowanie sugerujące problemy z komputerem Mac.
Graham Miln,