¿Mantener WiFi vivo cuando está en la batería y la tapa cerrada?

Estamos usando una VPN para acceder a ciertas partes de la infraestructura interna de la oficina; la VPN usa 2FA, por lo que guardar las credenciales y mostrarlas en la red cuando la máquina se activa no es una opción.

La gente lleva sus Macbooks a las reuniones y, cuando lo hacen,

  • perder energía (modo de batería)
  • cerrar la tapa

Esa combinación hace que la Mac apague WiFi, lo que subsecuentemente interrumpe con frecuencia la conexión VPN (sobrevive cuando no hay protocolo de enlace TLS mientras la interfaz está inactiva). ¿Hay alguna manera de evitar que la Mac se duerma (apagar WiFi) cuando se cierra la tapa?

Editar (agregar secuencia de comandos por solicitud en los comentarios):

#!/bin/bash
export PID=$(pgrep Tunnelblick)
CAFPID=""
while true
do
        if $(pgrep -q Tunnelblick && ifconfig | grep -q 172.30 && [[ $( pmset -g ac | wc -l ) -le 1 ]] && [[ $(ps -ef | grep -v grep | grep -c "caffeinate -t 300 -w $PID") -eq 0 ]]) ; then
                echo "need coffee"
                caffeinate -t 300 -w $PID >/dev/null 2>&1 &
        CAFPID=$(echo $!)
        else
                CAFPID=""
        fi
        if [[ $( pmset -g ac | wc -l ) -gt 1 ]] && [[ -z $CAFPID ]] ; then
                echo "no coffee"
                kill -TERM
                $CAFPID >/dev/null 2>&1
        fi
        sleep 60
done
No estoy seguro de que sea técnicamente posible que la CPU entre en estado de suspensión mientras mantiene una conexión wifi activa. Puede usar la aplicación NoSleep para mantener la CPU encendida, pero prepárese para una pérdida masiva de batería.
Gracias @Wowfunhappy. Echaré un vistazo a la herramienta.
en realidad, macOS ya lo hace, abre WiFi en modo de suspensión, ¡para hacer algo de mantenimiento! ¡Activa la siesta energética!
@Buscar웃: está habilitado, no parece mantenerlo vivo.
La mayoría le dará la recomendación de evitar que su Mac duerma, eso está bien siempre que esté conectado a la corriente, pero no tan bueno si solo tiene batería. Entonces, ¿qué es lo que estás tratando de que haga?
No apague Wifi cuando las personas deambulan por la oficina en reuniones, por ejemplo, y cierre la tapa. Las máquinas son difíciles de transportar cuando están abiertas, cerrar la tapa significa que las personas deben derribar el túnel VPN "atascado" y volver a conectarse, lo cual es subóptimo =/ ... No quiero que vean una función de seguridad como una molestia.
Intenté la sugerencia de usar "caffeinate -w $PID" y usé el PID para el buscador, pero la VPN todavía parece desconectarse cuando cierro la tapa y luego la vuelvo a conectar cuando la abro. Lo mismo con el Wifi. Estoy en MacOS Mojave. ¿Cualquier otra sugerencia? @Tink, ¿puedes compartir el script que usas? Además, ¿por qué se necesita la opción -t?
@user3562091: puede compartir el guión aquí cuando regrese al trabajo el lunes. No tengas la Mac en casa.
@ user3562091 - lo siento, se me cayó la pelota por completo en esto - he agregado el script a mi pregunta AHORA .

Respuestas (1)

Puedes probar esto, no es necesario instalar software adicional

Abra la Terminal y use

$ caffeinate -s  

o

$ caffeinate -w PID

Cuando se usa con el argumento -w, la suspensión se inhibirá siempre que el ID de proceso PID esté activo. Una vez que finaliza el proceso, se libera la aserción y el comportamiento de suspensión configurado se reanudará cuando corresponda.

Tenga en cuenta también que los ID de proceso están disponibles en el Monitor de actividad, o se pueden enumerar en la terminal ingresando ps -Al

¡Esa es una gran sugerencia! Puedo ser capaz de correr con esto; Sin embargo, tendrá que modificarlo y solo "cafeinar" si vpnclient no solo se está ejecutando, sino que existe una interfaz utun. No tiene sentido agotar la batería si está en segundo plano sin una red en funcionamiento (que es lo que hace Tunnelblick). Los mantendré actualizados con éxito/fracaso y votaré cuando termine;)
genial... espero que te funcione
-s Crea una aserción para evitar que el sistema entre en suspensión. Esta afirmación es válida solo cuando el sistema funciona con alimentación de CA. Ho-hum:}
lo lamento
Bueno, su sugerencia con -s (al menos de acuerdo con su documentación) no hizo lo que dijo, pero con un poco de secuencias de comandos caffeinate -t 600 -w $PIDobtuve lo que quería. Muchas gracias. :)
@tink gran descubrimiento, gracias por regresar y compartir, el t 600es el temporizador, en segundos o minutos