4 votes

Compte verrouillé planifié Mac OS X

Vous pouvez configurer votre compte Mac OS X pour verrouiller automatiquement l'écran de sorte que le mot de passe soit requis après un certain laps de temps d'inactivité, mais pouvez-vous faire la même chose en utilisant un horaire (par exemple à 17h30 tous les jours) ? Comme vous pouvez avoir l'ordinateur s'allumer/ s'éteindre ou passer en/ sortir du mode veille à un moment donné.

4voto

ironfroggy Points 3496

MODIFIER : Bien que je ne sois pas certain de la raison pour laquelle cron ne fonctionne pas pour ce cas d'utilisation spécifique, cette réponse est remplacée par la réponse (actuellement plus correcte) utilisant launchd.

Utilisez crontab -e dans l'application terminal pour ajouter /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend au Crontab au moment approprié, comme ceci (pour 17h30) :

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

4voto

ironfroggy Points 3496

Vous pouvez utiliser launchd pour cela. Placez le xml suivant dans un nouveau fichier texte dans ~/Bibliothèque/LaunchAgents/ et appelez-le de manière descriptive avec un suffixe de .plist. Par exemple, le mien est ~/Bibliothèque/LaunchAgents/logoutAt1730.plist.

        Label
        Déconnexion à 17h30
        ProgramArguments

            /System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession
            -suspend

        StartCalendarInterval

            Hour
            17
            Minute
            30

Si vous voulez qu'il s'exécute sur le cycle d'alimentation actuel (par exemple, vous ne voulez pas redémarrer pour que cela prenne effet), utilisez launchctl load ~/Bibliothèque/LaunchAgents/logoutAt1730.plist pour informer launchd du nouvel élément. Il devrait se charger automatiquement la prochaine fois que vous vous connecterez.

Utilisez launchctl list et recherchez la chaîne du libellé (Déconnexion à 17h30) pour valider que launchd est au courant de l'élément.

J'ai vérifié que cela fonctionne sur mon poste de travail. Je ne sais pas pourquoi cron ne fonctionne pas.

0voto

Andy Griffin Points 21

Je voulais quelque chose de similaire, mais au lieu de toujours verrouiller à un moment spécifique, je voulais verrouiller uniquement dans certaines conditions. Le script que j'ai utilisé pour vérifier ces conditions était déclenché par cron, donc j'avais le même problème.

Quand j'ai essayé CGSession -suspend dans un cronjob, j'ai remarqué que lorsqu'il était déclenché, Console.app enregistrait une erreur, disant que seul root et l'utilisateur actuellement connecté pouvaient déclencher un changement rapide d'utilisateur. Alors ma solution : l'exécuter en tant que root.

Alors dans mon script, j'ai utilisé ce qui suit pour verrouiller l'ordinateur :

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

Compliqué ? Oui. Fonctionnant ? Positif !

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X