Disconnettere gli utenti quando si spegne il computer tramite Applescript


1

Sto usando il seguente Applescript per eseguire un backup di Time Machine, quindi chiudere OS X sul computer nel nostro negozio.

do shell script "/System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper"

repeat
    delay 10
    if not IsProcRunning("backupd-helper") then
        ignoring application responses
            tell application "loginwindow" to «event aevtshut»
        end ignoring
        exit repeat
    end if
end repeat

on IsProcRunning(theProc)
    try
        do shell script "ps auxc | grep \"" & theProc & "\""
        return true
    on error
        return false
    end try
end IsProcRunning

Funziona bene e spegne il computer a meno che non sia stato effettuato l'accesso a un altro utente, quindi viene visualizzata la Security Agentfinestra che richiede un nome utente e una password dell'amministratore.

Sono curioso di sapere se qualcuno può aiutarmi ad aggiungere a questo script la possibilità di verificare se la Security Agentfinestra è aperta e, se lo è, di inserire nome utente e password nei rispettivi campi?

Risposte:


2

Se puoi andare a dormire invece di spegnerlo, non richiederebbe i privilegi di amministratore o la conferma da altri utenti che hanno effettuato l'accesso:

do shell script "tmutil startbackup -b"
tell application "System Events" to sleep

Puoi anche usare shutdown(espelle i dischi correttamente e così via, ma potresti perdere alcune modifiche non salvate):

do shell script "tmutil startbackup -b && shutdown -h now" with administrator privileges

Una funzione shell che potrebbe essere aggiunta ~/.profileo ~/.bash_profile:

tmshut() { sudo -s -- 'tmutil startbackup -b && shutdown -h now'; }

Apprezzo la risposta, ma sono un po 'confuso su come implementarla. Prima di tutto, stai suggerendo che ho appena messo il computer in standby invece di spegnerlo? Se uso la tua seconda idea, sull'uso shutdown, come la inserirò nel mio codice esistente? O sostituirei semplicemente il mio codice con il tuo?
stefmikhail,

Ho modificato la risposta. tmutil -bsostituisce sostanzialmente il codice pubblicato nella domanda. ( tmutil= Utilità Time Machine, aggiunta in 10.7; -b= blocco, oppure attendere fino al termine del backup.)
Lri,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.