¿Cómo puedo cerrar sesión automáticamente en la cuenta de invitado después de un período de inactividad?

Como parte de un sistema de quiosco, configuré una cuenta de invitado en una computadora Mac OS X Snow Leopard. Esta cuenta se borra cada vez que alguien cierra sesión en la computadora. Sin embargo, mucha gente no lo hace. ¿Hay alguna manera de cerrar sesión automáticamente en esta cuenta de invitado después de un período de inactividad?

Intenté usar el panel de preferencias de seguridad, pero eso solo hace que aparezca el cuadro de diálogo de confirmación de cierre de sesión.

He pirateado la /System/Library/User Templates/carpeta, por lo que puedo configurar el protector de pantalla, el fondo del escritorio, etc. Si algo como ScriptSaver puede resolver mi problema, con gusto lo usaré.

¿Sería realmente perjudicial establecer un apagado diario y un encendido al final o al comienzo del día?
@bmike Quiero que sea después de un período de inactividad, no de forma programada. No se puede confiar en que los usuarios cierren la sesión cuando hayan terminado...
Bastante justo: veré si puedo generar un elemento de inicio de sesión de lanzamiento para establecer el tiempo de espera automático. Seguro que parece que debería ser posible, solo tendré que volver a examinar cómo ocurre la creación de la carpeta de invitados cada inicio de sesión.
@bmike Solo quiero un script simple, o unas pocas líneas de código, que puedan forzar el cierre de sesión de una cuenta de invitado. El tiempo no es un problema. Hay scriptsaver, sleepwatcher, et al. para eso. Si pudieras inventar algo o indicarme la dirección correcta, sería de gran ayuda.

Respuestas (3)

Tal vez podría considerar usar SleepWatcher en lugar de Security.prefPane; es una utilidad de Unix que puede usar para forzar un cierre de sesión (o cualquier otra cosa a través de AppleScript) después de un cierto período de inactividad.

También podría usar ScriptSaver. El problema es que no tengo un comando para forzar el cierre de sesión de la cuenta de invitado. Si tienes uno, sería útil...
Es casi una trampa 22: sudo killall loginwindowforzará un cierre de sesión sin importar qué, pero debe bloquear la terminal para que los usuarios inteligentes no intenten sudo. Supongo que agregar killall loginwindowa la lista blanca de sudo no es peor que dejar que el usuario inicie sesión. afuera. También puede obtener la congelación profunda de Faronics para asegurarse de que todo esté perfectamente congelado en cada reinicio.
@Soumya92: Tal vez debería usar la aplicación ` tell application "loginwindow" de AppleScript para «event aevtrlgo» ` en su lugar, para que solo cierre la sesión del usuario invitado, no de todos los usuarios.
No veo cómo esta es la solución correcta a este problema. SleepWatcher es una herramienta de terceros y en este momento es bastante antigua. Las referencias de la página web 10.5. Parece que algún programa de secuencias de comandos permite al usuario (y a mí) superar ese cuadro de diálogo de confirmación y también eliminar la carpeta Invitado en el directorio Usuarios.
@zeeple (1) Como esta pregunta y mi respuesta tienen casi 8 años, puede haber mejores soluciones ahora, ¡no dude en publicarlas como una respuesta separada! (2) la herramienta puede ser antigua, pero la página web dice "ejecutándose con Mac OS X 10.5 y superior" y parece funcionar bien en 10.14.2 (p. ej.) (3) No entiendo muy bien ./sleepwatcher -t 20 -i lsla oración final de su comentario; ¡por favor elabora!
@Asmus gracias por la respuesta! Lamentablemente, después de todos estos años, Apple ha mantenido su compromiso de ser un sistema operativo no empresarial. Es indignante la poca consideración que tienen por los entornos escolares. Perdón por la diatriba... Mi última oración fue simplemente una expresión de esperanza de que el obstáculo principal (ese molesto diálogo de confirmación) podría superarse usando comandos nativos del sistema operativo. Pero bueno, en este punto estoy bastante acostumbrado a que Apple me decepcione :) . Gracias por la respuesta aceptada. ¡Probaré SleepWatcher!
@zeeple También encontré (pero no lo probé) IdleLogout que puede ser útil para usted.

Puede usar un producto comercial llamado Power Manager para cerrar la sesión de un usuario después de un período de inactividad .

Power Manager advertirá al usuario antes de iniciar el cierre de sesión. Durante el cierre de sesión, se cerrarán todas las aplicaciones abiertas; las aplicaciones que intenten bloquear el cierre de sesión se cerrarán después de un breve retraso.

Administrador de energía para Mac OS X

Divulgación: trabajo para la empresa que fabrica Power Manager.

También podría escribir una aplicación para hacer exactamente eso en lugar del conjunto de funciones que proporciona Power Manager. Sin duda es una herramienta poderosa, pero no puedo justificar su compra únicamente para este propósito. Es solo una computadora de quiosco. No puedo encontrar un buen comando o ejemplo de código para cerrar sesión en la cuenta de invitado
Gran respuesta y divulgación. ¿En qué se diferencia esto de los controles incorporados? ¿Se ejecuta en el arranque en lugar de a nivel de usuario?
Power Manager tiene una serie de ventajas. Power Manager mostrará una advertencia, se asegurará de que el cierre de sesión se lleve a cabo incluso cuando una aplicación tradicionalmente bloquearía el cierre de sesión. El evento puede ser condicional en función de las aplicaciones en ejecución o el resultado de un script externo. Consulte la documentación para obtener información específica: dssw.co.uk/powermanager/guide/v4

No he probado esto con una cuenta aGuest, pero no hay razón para que no funcione allí.

En

Preferencias del Sistema > Seguridad > General

es una casilla de verificación etiquetada como "Cerrar sesión después de XX minutos de inactividad"

¡Aquí establece la cantidad deseada de minutos y deja que haga la magia!

Hice. Como mencioné, eso solo me muestra el cuadro Confirmar cierre de sesión. La razón por la que no funcionará en una cuenta de invitado es que al cerrar sesión en una cuenta de invitado se eliminan los datos de la sesión, por lo que se requiere una confirmación.
Además, esa configuración se aplica a TODOS los usuarios, no solo a la cuenta de invitado.