Volevo qualcosa di simile, ma invece di bloccare sempre in un momento specifico, volevo bloccare solo su determinate condizioni. Lo script che ho usato per verificare queste condizioni è stato attivato da cron, quindi ho avuto lo stesso problema.
Quando ho provato CGSession -suspend
in un cronjob e ho notato che quando è stato attivato, Console.app ha registrato un errore, dicendo che solo root e l'utente loggato corrente potevano attivare un Cambio rapido utente. Quindi la mia soluzione: eseguila come root.
Quindi nel mio script, ho usato il seguente, per bloccare il computer:
sudo /usr/bin/osascript -e 'tell application "System Events" to do shell script "/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend"'
contorto? Sì. Lavoro? Positivo!