4 votos

bloqueo programado de cuentas Mac OS X

Puedes configurar tu cuenta de Mac OS X para que se bloquee automáticamente la pantalla de manera que se requiera la contraseña después de cierto tiempo de inactividad, pero ¿puedes hacer lo mismo usando un horario (digamos a las 5:30 PM todos los días)? Algo parecido a lo que puedes hacer para que el ordenador se encienda/apague o se ponga/despierte del sueño a una hora determinada.

4voto

ironfroggy Puntos 3496

EDIT: Aunque no estoy seguro de por qué cron no funciona para este caso de uso específico, esta respuesta es superada por la respuesta (actualmente más correcta) que utiliza launchd .

Utilice crontab -e en la aplicación de terminal para añadir /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend a la Crontab a la hora apropiada, así (para las 17:30):

30 17 * * * /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

4voto

ironfroggy Puntos 3496

Puede utilizar launchd para hacer esto. Coloque el siguiente xml en un nuevo archivo de texto en ~/Library/LaunchAgents/ y llamarlo algo descriptivo con un sufijo de .plist . Por ejemplo, el mío es ~/Library/LaunchAgents/logoutAt1730.plist .

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>Logout At 5:30 PM</string>
        <key>ProgramArguments</key>
        <array>
            <string>/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession</string>
            <string>-suspend</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>17</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    </dict>
    </plist>

Si quieres que se ejecute en el ciclo de energía actual (por ejemplo, no quieres reiniciar para que esto tenga efecto) utiliza launchctl load ~/Library/LaunchAgents/logoutAt1730.plist para contar launchd sobre el nuevo artículo. Debería cargarse automáticamente la próxima vez que te conectes.

Utilice launchctl list y buscar la cadena de etiquetas (Logout at 5:30 PM) para validar que launchd sabe del artículo.

He comprobado que esto funciona en mi estación de trabajo. No sé por qué cron no lo hace.

0voto

Andy Griffin Puntos 21

Yo quería algo parecido, pero en lugar de bloquear siempre a una hora determinada, quería bloquear sólo en determinadas condiciones. El script que utilizaba para comprobar esas condiciones era disparado por cron, así que tenía el mismo problema.

Cuando intenté CGSession -suspend en un cronjob, y me di cuenta de que cuando se activaba, Console.app registraba un error, diciendo que sólo Root y el usuario actual registrado podían activar un Fast User Switching. Así que mi solución: ejecutarlo como Root.

Así que en mi script, he utilizado lo siguiente, para bloquear el ordenador:

sudo /usr/bin/osascript -e 'tell application "System Events" to do shell script "/System/Library/CoreServices/Menu\\ Extras/User.menu/Contents/Resources/CGSession -suspend"'

¿Convulsivo? Sí. ¿Trabajando? Sí.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X