bloqueo de cuenta programada Mac OS X

3

Puede configurar su cuenta de Mac OS X para que bloquee automáticamente la pantalla de modo que se requiera la contraseña después de un cierto tiempo de inactividad, pero puede hacer lo mismo utilizando un programa (por ejemplo, a las 5:30 p.m. todos los días )? Algo así como la forma en que puede hacer que la computadora se encienda / apague o se despierte o se levante del modo de reposo en un momento determinado.

    
pregunta newenglander 20.04.2012 - 19:34

3 respuestas

4

Puedes usar launchd para hacer esto. Coloque el siguiente xml en un nuevo archivo de texto en ~/Library/LaunchAgents/ y llámelo 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 desea que se ejecute en el ciclo de energía actual (por ejemplo, no desea reiniciar para que esto tenga efecto) use launchctl load ~/Library/LaunchAgents/logoutAt1730.plist para informar a launchd sobre el nuevo elemento. Debería cargarse automáticamente la próxima vez que inicies sesión.

Use launchctl list y busque la cadena de etiqueta (Salir a las 5:30 PM) para validar que launchd conoce el artículo.

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

    
respondido por el zwerdlds 26.04.2012 - 21:33
4

EDITAR: 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 usa launchd .

Use crontab -e en la aplicación de terminal para agregar /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend al Crontab en el momento adecuado, como así (para las 5:30 PM):

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

    
respondido por el zwerdlds 20.04.2012 - 20:50
0

Quería algo similar, pero en lugar de bloquear siempre en un momento específico, quería bloquear solo en ciertas condiciones. La secuencia de comandos que usé para verificar esas condiciones fue activada por cron, por lo que tuve el mismo problema.

Cuando probé CGSession -suspend en un cronjob y noté que cuando se activó, Console.app registró un error, diciendo que solo la raíz y el usuario registrado actual podían desencadenar un Cambio rápido de usuario. Así que mi solución: ejecutarlo como root.

Entonces, en mi script, usé lo siguiente, para bloquear la computadora:

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

¿Enrollado? Sí. ¿Trabajando? Positivo!

    
respondido por el Guillaume Boudreau 19.04.2013 - 19:43

Lea otras preguntas en las etiquetas