doppia password per accedere all'account

1

Ho l'opzione Require password 4 hours after sleep ... in Security and Privacy System Preferences set e sto eseguendo uno script con launchd per sospendere la mia sessione ad una certa ora del giorno (vedi questo domanda per i dettagli). Il risultato è (quando l'intervallo temporale e l'ora del giorno specifica si sovrappongono) è che il mio account è doppiamente bloccato, uno per ogni azione, che richiede l'immissione della password due volte.

C'è un modo per verificare (ad esempio in uno shellscript o in un Applescript) se il mio account è già bloccato o meno prima di chiamare il comando /System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend ?

    
posta newenglander 10.05.2012 - 19:19
fonte

1 risposta

1

Il seguente script dovrebbe fare ciò di cui hai bisogno.

TESTATO SU:

  • 10.6.x
  • 10.7.4

Impedisci il comando di sospensione se il tempo di accesso forzato di Screensaver è già stato raggiunto.

NOTA: modifica la variabile USER_PATH in modo che corrisponda a quella dell'utente che desideri gestire.

#!/bin/bash

USER_PATH="/Users/YOUR_USER"

ELAPSED_TIME=$(ps -eo etime,command | grep "ScreenSaverEngine.app" | grep -v "grep" | sed 's/:.*//' | awk '{print $1}')
CHOSEN_TIME=$(/usr/libexec/PlistBuddy -c "Print:askForPasswordDelay" ${USER_PATH}/Library/Preferences/com.apple.screensaver.plist | sed 's/\..*//')

if [[ ${CHOSEN_TIME} != 0 ]]; then
    if [[ ${CHOSEN_TIME} -ge 60 ]]; then
        CONVERT_TIME=$(expr ${CHOSEN_TIME} / 60)    
    elif [[ ${CHOSEN_TIME} -lt 60 ]]; then
        CONVERT_TIME="${CHOSEN_TIME}"
    fi
fi

if [[ ${ELAPSED_TIME} -lt ${CONVERT_TIME} ]]; then
    /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend   
fi
    
risposta data 10.05.2012 - 21:33
fonte

Leggi altre domande sui tag