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é.
Réponses
Trop de publicités?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
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.
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 !