blocco account programmato Mac OS X

3

Puoi impostare il tuo account Mac OS X per bloccare automaticamente lo schermo in modo che la password sia necessaria dopo un certo periodo di inattività, ma puoi fare la stessa cosa usando un programma (diciamo alle 5:30 PM ogni giorno )? Un po 'come come si può accendere / spegnere il computer o andare / svegliarsi dal sonno in un dato momento.

    
posta newenglander 20.04.2012 - 19:34
fonte

3 risposte

4

Puoi usare launchd per fare questo. Inserisci il seguente xml in un nuovo file di testo in ~/Library/LaunchAgents/ e chiamalo qualcosa di descrittivo con un suffisso di .plist . Ad esempio, il mio è ~/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>

Se vuoi che funzioni con il ciclo di spegnimento corrente (es. non vuoi riavviare perché questo abbia effetto) usa launchctl load ~/Library/LaunchAgents/logoutAt1730.plist per dire launchd sul nuovo oggetto. Dovrebbe caricarsi automaticamente al prossimo accesso.

Utilizza launchctl list e cerca la stringa dell'etichetta (Esci alle 17:30) per convalidare che launchd conosce l'elemento.

Ho verificato che funzioni sulla mia workstation. Non so perché cron non lo fa.

    
risposta data 26.04.2012 - 21:33
fonte
4

EDIT: anche se non sono sicuro del motivo per cui cron non riesce a funzionare per questo caso d'uso specifico, questa risposta è superata dalla risposta (attualmente più corretta) usando launchd .

Utilizza crontab -e nell'applicazione terminale per aggiungere /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend al Crontab al momento opportuno, ad esempio (per le 17:30):

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

    
risposta data 20.04.2012 - 20:50
fonte
0

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!

    
risposta data 19.04.2013 - 19:43
fonte

Leggi altre domande sui tag