¿Es posible configurar Internet Sharing para permitir que la computadora duerma?

8

TL; DR: Compartir en Internet impide que mi Mac duerma. Necesito dormir manualmente el sistema de forma regular. Quiero una forma de configurar el uso compartido de Internet para dejar de evitar el sueño.

Tengo un iMac en casa en mi habitación demasiado lejos de mi enrutador, y no puedo usar la conexión inalámbrica, también, la cobertura 3G aquí es horrible, por lo que he habilitado Internet Sharing para poder usar mi iPhone / iPad conectado a través de mi iMac

En el trabajo, estoy en una red corporativa y la conexión inalámbrica es algo aburrida y demasiado restrictiva, por lo que también he habilitado el uso compartido de Internet en mi MacBook Pro, para que mi iPhone pueda acceder a cosas internas.

El problema es: cuando presiono + + (o > Suspender) ninguna de las computadoras se pone en suspensión como se desea; eso es a menos que desactive Internet Sharing primero.

En casa quiero que la computadora duerma mientras duermo (ahorra energía + más silencio) y en el trabajo cuando voy a casa también quiero que duerma, por lo que no tengo que cerrar todas las aplicaciones conectadas (Adium, Coloquio, etc.) y reabrir nuevamente al día siguiente.

¿Cómo puedo configurar pmseto Compartir Internet para poder dormir mi computadora sin tener este problema?

Nota: Ya solía pmsetcomprobar si había otras razones y la infracción pides siempre com.apple.InternetSharing.

Editar: me doy cuenta de que dormir la computadora hará que sea imposible usar Internet Sharing. Quiero que duerma completamente y quiero que Internet Sharing vuelva a estar activado solo cuando la computadora se despierte.

Irae Carvalho
fuente
Mi salida al comando anterior es DenySystemSleep. Aunque encontré la cadena, no pude usarla sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpara cambiar el comportamiento. ¿Podrías ampliar tu respuesta un poco?
Irae Carvalho
Entonces, por ejemplo, quieres algo que apague el intercambio y luego duerma. Y algo más que, automáticamente al despertar, activará el uso compartido.
GEdgar
¡Exactamente! Esto es lo que necesito
Irae Carvalho

Respuestas:

7

He experimentado con el uso de ControlPlane para lograr lo que quieres. Mi resultado preliminar es que hará lo que quieras.

ControlPlane detecta cambios en su sistema llamados 'fuentes de evidencia'. Los cambios se evalúan con 'reglas' que definen un cambio en 'contexto'. Asociados con cada contexto están las 'acciones'.

Una de las 'fuentes de evidencia' es un evento de sueño / vigilia. Así que configuré una regla para que en un evento de suspensión (p. Ej., Haya hecho clic en suspensión en el menú Apple), se active el contexto 'Sleepy Time'. Y para este contexto, he utilizado la acción 'ToggleInternetSharing' para desactivar.

Después de hacer clic en Suspender, recibo una alerta que dice que el uso compartido de Internet se está apagando y después de un tiempo (parece una eternidad, pero probablemente sea solo 10 o 20 segundos) la Mac se pone en suspensión.

Y tengo una segunda regla para que en un evento de activación se active el contexto 'Waking Up' y esto tenga la acción de activar 'ToggleInternetSharing'.

Mis reglas y acciones:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

¡Intentalo!

Esto solo está rascando la superficie de lo que ControlPlane puede hacer.

Gilby
fuente
Aplicación increíble! ¡Funcionó a las mil maravillas! Muchas gracias por la explicación detallada. Además, verifiqué que la aplicación sea completamente gratuita y de código abierto. Para mí esto cuenta como un plus a favor de usarlo =)
Irae Carvalho
Hace tiempo que conozco ControlPlane, pero no lo utilicé. Su pregunta fue una excelente razón para explorar sus capacidades, gracias por eso.
Gilby
+1 aquí ... Con OS X Mavericks v10.9.4y aún funciona como un encanto. Gracias
gmo
Parece una gran aplicación! Desafortunadamente, alternar el uso compartido de Internet no funciona en El Capitán por el momento (probablemente tampoco en Sierra).
Winterflags
2

Si está ejecutando Lion, InternetSharingestá bloqueando explícitamente el SystemSleep. Mira esto:

strings /usr/libexec/InternetSharing | grep SystemSleep

El resultado de este comando: DenySystemSleep es la prueba de que InternetSharingestá bloqueando deliberadamente la posibilidad de que el núcleo se vaya a dormir. Hay una explicación simple para esta protección: una vez que InternetSharingse dispara, los clientes de esta Mac pueden estar usándola como un enrutador para acceder a Internet. Es posible que muchas cosas se ejecuten automáticamente sobre esta conexión a Internet sin ningún conocimiento de la persona que está frente a la pantalla.

Esta conexión solo debe ser interrumpida por el administrador del sistema que la inició y no por ningún comportamiento automático del sistema.

Este es un comportamiento seguro.

Por lo tanto, el método correcto para asegurarse de que InternetSharingesté apagado cuando la suspensión de Mac es programar 4 eventos en el siguiente orden:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Esta es la programación ofrecida por ControlPlane.

dan
fuente
Mi salida al comando anterior es DenySystemSleep. Aunque encontré la cadena, no pude usarla sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpara cambiar el comportamiento. ¿Podrías ampliar tu respuesta un poco?
Irae Carvalho
1
Creo que @ daniel-azuelos significa para demostrar que InternetSharing es responsable. El comando que sugiere busca a través del binario de InternetSharing y encuentra la cadena relacionada con el bloqueo del sueño. Esto ayuda a confirmar qué es probable que sea responsable de bloquear el sueño, pero no de obtener el comportamiento deseado.
Graham Miln
1

No es práctico tener una Mac con Internet Sharing habilitado para poder dormir.

La función de uso compartido de Internet es la versión de software de un enrutador: actúa como una puerta de enlace a Internet, un servidor DHCP, un firewall y un reenviador de DNS. Funciona igual que los enrutadores que puede comprar en su distribuidor local; Y es gratis.

Sin embargo, hay una desventaja masiva: si la Mac que actúa como puerta de enlace está apagada o dormida, entonces las otras máquinas no pueden conectarse.

Es por eso que Internet Sharing evita que su máquina se vaya a dormir.

Pero puedo compartir archivos / iTunes / pantalla cuando está dormido

Sí, puedes compartir todas esas cosas y más. Sin embargo, cuando accede a esos archivos, su Mac se activa . Esto se llama Wake On Demand y Bonjour Sleep Proxy .

Cuando su Mac está dormida, mantiene la conexión de red algo "en vivo"; está escuchando los "paquetes" de Bonjour para despertar la computadora. Esto lo maneja el dispositivo del aeropuerto (el adaptador de red) mismo; No la computadora. Cuando recibe el "paquete de activación", la Mac se activa y puede comenzar a compartir recursos.

Bonjour 1 es un servicio de descubrimiento de configuración cero que utiliza servicios de nombres de dominio de multidifusión (mDNS) que es un protocolo UDP 2 (se transmite y no se puede enrutar), que es un transporte orientado a mensajes pequeño, sin estado y mínimo.

Básicamente, UDP (en lo que se basa Bonjour) es perfecto para enviar un mensaje a su computadora para decir "¡Despierta!"

Para navegar por el Internt (use una computadora detrás de la puerta de enlace Mac), necesita la pila de protocolos completa que se basa en TCP . Necesitará DHCP, NAT, firewall, etc., lo que significa que tendrá que activar todos esos servicios antes de permitir que los clientes naveguen por la web. Esto introducirá una gran cantidad de latencia.

Y volviendo a un enfoque más pragmático, si su Mac se durmiera y actuara como una puerta de enlace, nunca se iría a dormir o estaría de arriba abajo como alguien con un mal caso de insomnio.


1 Bonjour es la implementación de Apple de redes de configuración cero (zeroconf), un grupo de tecnologías que incluye descubrimiento de servicios, asignación de direcciones y resolución de nombres de host. Bonjour localiza dispositivos como impresoras, otras computadoras y los servicios que esos dispositivos ofrecen en una red local utilizando registros de servicio del Sistema de nombres de dominio de multidifusión (mDNS).

2 UDP es un protocolo mínimo de capa de transporte orientado a mensajes. UDP no proporciona garantías al protocolo de la capa superior para la entrega de mensajes y la capa UDP no conserva el estado de los mensajes UDP una vez enviados. Es simple, adecuado para bootstrapping u otros fines sin una pila de protocolos completa, como el DHCP y el Protocolo trivial de transferencia de archivos.

Alano
fuente
Allan, gracias por tu perspicacia. En mi caso particular, solo uso el uso compartido de Internet debido a un MBP que conecto a mi iMac a través de Thunderbolt Bridge para obtener la ventaja de Ethernet (100 Mbit en lugar de ~ 30 Mbit Wifi). No uso Internet Sharing como un 'enrutador'. Por lo tanto, sería práctico para mí encontrar una manera mediante script o automatización para habilitar / deshabilitar el uso compartido de Internet (o forzar el sueño).
Winterflags
El uso compartido de Internet está convirtiendo su Mac en un enrutador, esa es la función principal de lo que hace el uso compartido de Internet.
Allan
Entiendo, pero no estoy hablando de eso en términos técnicos. Utilizo Internet Sharing solo cuando conecto el MBP a través de Thunderbolt Bridge al iMac, y por lo tanto no tiene sentido que el iMac nunca se vaya a dormir, independientemente de si está conectado o no. Por lo tanto, busca una solución alternativa, tal vez con secuencias de comandos.
Winterflags el
1
Bueno, no vas a anular el uso compartido de Internet para evitar que tu MBP se vaya a dormir, pero si quieres una "solución" mira aquí: apple.stackexchange.com/questions/2488/…
Allan
Gracias, ya he probado esas respuestas y no he podido hacer que funcionen con El Capitán (quizás debido a SIP), pero tendré que investigar más a fondo.
Winterflags el
0

Cuando la unidad de administración de energía de la computadora apaga el dispositivo, entra en un modo de bajo consumo. Su código ejecutable promedio en la computadora no se ejecuta de la manera normal: la computadora mantiene suficiente energía para actualizar la memoria (si es necesario) y poco más. No podrá participar en la informática de propósito general mientras la computadora duerme.

Sin embargo, hay una buena alternativa que debe considerar. En lugar de dormir toda la unidad, revisa la pantalla dormir en System Preferences -> Energy Saver. En mi caso de uso, tengo una configuración de esquina activa (que puede habilitar System Preferences -> Desktop & Screen Saver -> Screen Saver) para que cuando vaya a almorzar y necesite bloquear mi pantalla y / o simplemente poner la pantalla en reposo, me mueva hacia abajo -esquina izquierda. Funciona bien para mí, la computadora no vuelve de una rutina de suspensión y los procesos de larga duración que he olvidado no se interrumpen. En su caso, esto significa que su punto de acceso WiFi no se caerá.

zwerdlds
fuente
1
De hecho, esto es muy útil, utilizo <kbd> ^ </kbd> + <kbd> ⇧ </kbd> + <kbd> ⏏ </kbd> para hacer eso. Pero no es lo que deseo. No necesito compartir Internet mientras la computadora duerme. Necesito que la computadora realmente duerma e incluso apague el uso compartido y el wifi. Editaré mi pregunta para aclarar. Gracias de todos modos =)
Irae Carvalho
0

Puede usar Power Manager para poner su Mac en suspensión después de períodos de inactividad. Power Manager puede anular procesos y aplicaciones que bloquean la suspensión inactiva, incluido el uso compartido de Internet.

La guía del usuario explica cómo configurar esto:

Una mejor inactividad activó el sueño

Power Manager ofrece una alternativa. Proporcionamos una inactividad activada por el sueño. La inactividad se mide de manera diferente al tiempo de inactividad; la inactividad es una medida más simple determinada únicamente por la actividad del usuario.

Alternativamente, la siguiente receta muestra cómo crear un evento de Power Manager para poner su Mac en suspensión después de un período de inactividad .

Power Manager: apagado después de la tarea de inactividad

Descargo de responsabilidad: trabajo para la empresa que desarrolla Power Manager.

Graham Miln
fuente
No funcionó para mí con Internet Sharing activo. -1 por perder una hora de mi vida.
Winterflags
¿Qué quería lograr y qué no funcionó para usted?
Graham Miln
Igual que el OP y su respuesta. Configuré Inactivity Sleep, con la esperanza de que 'Forzar Sleep' con Internet Sharing habilitado en Preferencias del Sistema> Compartir . No lo hizo, pero activaría la suspensión si se deshabilita el uso compartido de Internet.
Winterflags
1
Power Manager emite una solicitud de suspensión a macOS. Si tiene problemas con el sueño, como lo indica la otra pregunta, los mismos problemas de sueño también afectarán las solicitudes de sueño emitidas por aplicaciones de terceros. Por supuesto, puedo estar equivocado o simplemente equivocado en mi comprensión de su situación. Espero que puedas encontrar una solución.
Graham Miln
1
macOS siempre dormirá cuando se le solicite explícitamente que suspenda - Finder> Apple (menú)> Suspender . No dormir es un comportamiento que sugiere problemas con la Mac.
Graham Miln