É possível configurar o compartilhamento da Internet para permitir que o computador durma?

9

TL; DR: o compartilhamento da Internet está impedindo o meu Mac de dormir. Preciso dormir manualmente o sistema regularmente. Quero uma maneira de configurar o compartilhamento da Internet para parar de impedir o sono.

Eu tenho um iMac em casa no meu quarto, muito longe do meu roteador, e também não posso usar a conexão sem fio. A cobertura 3G aqui é horrível. Por isso, ativei o compartilhamento de Internet para poder usar meu iPhone / iPad conectado através do meu iMac.

No trabalho, eu estou em uma rede corporativa e a conexão sem fio é um tanto esfarrapada e muito restritiva; portanto, também habilitei o compartilhamento de Internet no meu MacBook Pro para que meu iPhone possa acessar informações internas.

O problema é: Quando eu pressiono + + (ou Sleep> Suspender), nenhum computador entra no modo de espera desejado; isto é, a menos que eu desative o Compartilhamento da Internet primeiro.

Em casa, quero que o computador durma enquanto durmo (economiza energia + mais silêncio) e no trabalho, quando vou para casa, também quero que durma, para que não precise fechar todos os aplicativos conectados (Adium, Colloquy, etc.) e reabra novamente no dia seguinte.

Como posso configurar pmsetou compartilhar a Internet para que eu possa dormir meu computador sem encontrar esse problema?

Nota: Eu já usei pmsetpara verificar se havia outros motivos e a ofensa pidé sempre com.apple.InternetSharing.

Edit: Eu sei que dormir o computador tornará impossível o uso do compartilhamento na Internet. Quero que ele durma completamente e quero que o Compartilhamento da Internet seja ativado novamente apenas quando o computador acordar.

Irae Carvalho
fonte
Minha saída para o comando acima é DenySystemSleep. Embora eu tenha encontrado a string, não consegui usá-la sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpara alterar o comportamento. Você poderia expandir você responde um pouco?
Irae Carvalho
Então, por exemplo, você deseja algo que desative o compartilhamento e, em seguida, durma. E outra coisa que ativará automaticamente o compartilhamento automaticamente.
GEdgar 25/05
Exatamente! Isto é o que eu preciso
Irae Carvalho

Respostas:

8

Eu experimentei usar o ControlPlane para alcançar o que você deseja. Meu resultado preliminar é que ele fará o que você deseja.

O ControlPlane detecta alterações no seu sistema chamadas 'fontes de evidência'. As alterações são avaliadas com 'regras' que definem uma alteração no 'contexto'. Associadas a cada contexto estão 'ações'.

Uma das 'fontes de evidência' é um evento de sono / vigília. Portanto, configurei uma regra para que, em um evento de suspensão (por exemplo, você tenha clicado em suspensão no menu Apple), o contexto 'Tempo de suspensão' seja acionado. E para esse contexto, usei a ação 'ToggleInternetSharing' para desativar.

Depois de clicar em Suspender, recebo um alerta dizendo que o compartilhamento da Internet está sendo desativado e depois de um tempo (parece uma eternidade, mas provavelmente leva apenas 10 ou 20 segundos), o Mac entra no modo de suspensão.

E eu tenho uma segunda regra para que, em um evento de ativação, o contexto 'Acordar' seja acionado e tenha a ação de ativar 'ToggleInternetSharing'.

Minhas regras e ações:

insira a descrição da imagem aqui insira a descrição da imagem aqui

Tente!

Isso está apenas arranhando a superfície do que o ControlPlane pode fazer.

Gilby
fonte
App incrível! Funcionou como um encanto! Muito obrigado pela explicação detalhada. Além disso, verifiquei se o aplicativo é totalmente gratuito e de código aberto. Para mim, isso conta como uma vantagem em favor de usá-lo =)
Irae Carvalho
Conheço o ControlPlane há algum tempo, mas não o usei. Sua pergunta foi um excelente motivo para explorar suas capacidades - obrigado por isso.
quer
+1 aqui ... Com OS X Mavericks v10.9.4e ainda funciona como um encanto. Thank's
gmo
Parece uma ótima aplicação! Infelizmente, alternar o compartilhamento da Internet não funciona no El Capitan por enquanto (provavelmente também não no Sierra).
31516 Winterflags
2

Se você estiver executando o Lion, InternetSharingestá explicitamente bloqueando o SystemSleep. Dê uma olhada em:

strings /usr/libexec/InternetSharing | grep SystemSleep

A saída deste comando: DenySystemSleep é a prova que InternetSharingestá intencionalmente bloqueando a possibilidade do kernel de adormecer. Há uma explicação simples para essa proteção: uma vez InternetSharingacionado, os clientes deste Mac podem usá-lo como roteador para acessar a Internet. Muita coisa pode estar sendo executada automaticamente em cima dessa conexão com a Internet sem o conhecimento da pessoa na frente da tela.

Essa conexão deve ser interrompida apenas pelo administrador do sistema que a iniciou e não por qualquer comportamento automático do sistema.

Este é um comportamento seguro.

Portanto, o método correto para garantir InternetSharingestá desativado quando o Mac sleep for agendar 4 eventos na seguinte ordem:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Esse é o agendamento oferecido por ControlPlane.

dan
fonte
Minha saída para o comando acima é DenySystemSleep. Embora eu tenha encontrado a string, não consegui usá-la sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpara alterar o comportamento. Você poderia expandir você responde um pouco?
Irae Carvalho
1
Acredito que @ daniel-azuelos significa demonstração de que o InternetSharing é responsável. O comando que ele sugere pesquisa no binário InternetSharing e encontra a string relacionada ao bloqueio do sono. Isso ajuda a confirmar o que provavelmente é responsável por bloquear o sono, mas não por obter o comportamento desejado.
Graham Miln
1

Não é prático ter um Mac com o Compartilhamento da Internet ativado para poder dormir.

O recurso de compartilhamento da Internet é a versão do software de um roteador: ele atua como um gateway para a Internet, um servidor DHCP, um firewall e um encaminhador de DNS. Ele funciona como os roteadores que você pode comprar no seu revendedor local; e é grátis.

No entanto, há uma grande desvantagem: se o Mac que atua como gateway estiver desligado ou dormindo, as outras máquinas não poderão ficar on-line.

É por isso que o compartilhamento na Internet impede que sua máquina entre no modo de suspensão.

Mas posso compartilhar arquivos / iTunes / Tela quando estiver dormindo

Sim, você pode compartilhar todas essas coisas e muito mais. No entanto, quando você acessa esses arquivos, o seu Mac é ativado . Isso se chama Wake On Demand e Bonjour Sleep Proxy .

Quando o seu Mac está dormindo, ele mantém a conexão de rede um pouco "ativa"; está ouvindo os "pacotes" do Bonjour para ativar o computador. Isso é tratado pelo próprio dispositivo Airport (o adaptador de rede); não o computador. Quando ele recebe o "pacote de ativação", o Mac é ativado e você pode iniciar o compartilhamento de recursos.

O Bonjour 1 é um serviço de descoberta de configuração zero que usa os serviços de nome de domínio multicast (mDNS), que é um protocolo UDP 2 (é transmitido e não pode ser roteado), que é um transporte pequeno, sem estado e mínimo orientado a mensagens.

Basicamente, o UDP (no qual Bonjour se baseia) é perfeito para enviar uma mensagem ao seu computador dizendo "Acorde!"

Para navegar no Internt (use um computador atrás do gateway Mac), você precisa da pilha de protocolos completa baseada em TCP . Ele precisará de DHCP, NAT, firewall, etc., o que significa que terá que ativar todos esses serviços antes de permitir que os clientes naveguem na web. Isso introduzirá muita latência.

E voltando a uma abordagem mais pragmática, se o seu Mac dormisse e agisse como um gateway, ele nunca iria dormir ou seria subido e descido como alguém com um caso grave de insônia.


1 Bonjour é a implementação da Apple de rede de configuração zero (zeroconf), um grupo de tecnologias que inclui descoberta de serviço, atribuição de endereço e resolução de nome de host. Bonjour localiza dispositivos como impressoras, outros computadores e os serviços que esses dispositivos oferecem em uma rede local usando registros de serviço multicast Domain Name System (mDNS).

2 UDP é um protocolo mínimo de camada de transporte orientado a mensagens. O UDP não oferece garantias ao protocolo da camada superior para entrega de mensagens e a camada UDP não retém nenhum estado das mensagens UDP uma vez enviadas. É simples, adequado para inicialização ou outros propósitos sem uma pilha de protocolos completa, como o DHCP e o Trivial File Transfer Protocol.

Allan
fonte
Allan, obrigado pela sua compreensão. No meu caso específico, uso apenas o compartilhamento da Internet por causa de um MBP que conecto ao meu iMac via Thunderbolt Bridge para obter a vantagem da Ethernet (100 Mbit em vez de ~ 30 Mbit Wifi). Não uso o compartilhamento da Internet como um 'roteador'. Seria, portanto, prático para mim encontrar uma maneira através de script ou automação para ativar / desativar o Compartilhamento da Internet (ou forçar o sono).
Winterflags
O compartilhamento de Internet está transformando seu Mac em um roteador - essa é a principal função do que o compartilhamento de Internet faz.
Allan
Eu entendo, mas não estou falando sobre isso em termos técnicos. Utilizo o compartilhamento da Internet apenas ao conectar o MBP via Thunderbolt Bridge ao iMac e, portanto, não faz sentido que o iMac nunca durma, independentemente de estar conectado ou não. Portanto, procure uma solução alternativa, talvez envolvendo scripts.
Winterflags 04/11/19
1
Bem, você não vai anular o compartilhamento da Internet para impedir que o seu MBP entre em suspensão, mas se você quiser uma "solução alternativa", consulte aqui: apple.stackexchange.com/questions/2488/…
Allan
Obrigado - Já tentei essas respostas e não consegui fazê-las funcionar com o El Capitan (talvez devido ao SIP), mas vou ter que investigar mais.
Winterflags 4/11/16
1

Ré. ControlPlane, isso funciona para mim ...

Dois contextos (ambos idênticos) As regras Três ações

CharlesB
fonte
0

Quando a unidade de gerenciamento de energia do computador faz o dispositivo dormir, ele entra no modo de baixa energia. Seu código executável médio no computador não é executado da maneira normal: o computador mantém energia suficiente para atualizar a memória (se necessário) e pouco mais. Você não poderá se envolver em computação de uso geral enquanto o computador dorme.

No entanto, há uma boa alternativa que você deve procurar. Em vez de adormecer a unidade inteira, verifique a exibição de inatividade System Preferences -> Energy Saver. No meu caso de uso, tenho uma configuração de canto quente (que você pode ativar System Preferences -> Desktop & Screen Saver -> Screen Saver) para que quando for almoçar e precise bloquear minha tela e / ou apenas colocar a tela em suspensão, mova-me para o fundo -canto esquerdo. Funciona bem para mim, o computador não volta de uma rotina de sono e os processos de execução prolongada que esqueci não são interrompidos. No seu caso, isso significa que seu ponto de acesso WiFi não será descartado.

zwerdlds
fonte
1
Isso é realmente muito útil, eu uso <kbd> ^ </kbd> + <kbd> ⇧ </kbd> + <kbd> ⏏ </kbd> para fazer isso. Mas não é o que eu desejo. Não preciso do compartilhamento da Internet enquanto o computador dorme. Eu preciso que o computador realmente durma e até desative o compartilhamento e o wifi. Editarei minha pergunta para esclarecer. Obrigado de qualquer forma =)
Irae Carvalho
0

Você pode usar o Power Manager para colocar seu Mac em repouso após períodos de inatividade. O Power Manager pode anular processos e aplicativos que bloqueiam a suspensão ociosa, incluindo o Compartilhamento da Internet.

O guia do usuário mostra como configurar isso:

Uma melhor inatividade desencadeou o sono

O Power Manager oferece uma alternativa. Nós fornecemos um sono desencadeado por inatividade. A inatividade é medida de maneira diferente do tempo ocioso; inatividade é uma medida mais simples, determinada apenas pela atividade do usuário.

Como alternativa, a receita a seguir mostra como criar um evento do Power Manager para colocar o Mac em repouso após um período de inatividade .

Power Manager: Desligar após tarefa de inatividade

Isenção de responsabilidade: trabalho para a empresa que desenvolve o Power Manager.

Graham Miln
fonte
Não funcionou para mim com o compartilhamento da Internet ativo. -1 por desperdiçar uma hora da minha vida.
Winterflags
O que você queria alcançar e o que não funcionou para você?
Graham Miln
O mesmo que o OP e sua resposta. Eu configurei o Inactivity Sleep, na esperança de que ele 'Force Sleep' com o Compartilhamento da Internet ativado em Preferências do Sistema> Compartilhamento . Não funcionava, mas ativaria o modo de suspensão se o compartilhamento da Internet estivesse desativado.
31516 Winterflags
1
O Power Manager emite uma solicitação de suspensão para o macOS. Se você estiver tendo problemas com o sono, como a outra pergunta indica, os mesmos problemas também afetarão as solicitações de sono emitidas por aplicativos de terceiros. É claro que posso estar enganado ou simplesmente errado ao entender sua situação. Espero que você possa encontrar uma solução.
Graham Miln
1
O macOS sempre dorme quando solicitado explicitamente para dormir - Localizador> Apple (menu)> Dormir . Não dormir é um comportamento que sugere problemas com o Mac.
Graham Miln