Efetuar logout dos usuários ao desligar o computador via Applescript

1

Estou usando o seguinte Applescript para executar um backup do Time Machine e, em seguida, encerro o OS X no computador em nossa loja.

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

Funciona bem e desliga o computador a menos que outro usuário esteja logado, então a janela Security Agent aparece solicitando um nome de usuário e senha de administrador.

Estou curioso para saber se alguém pode me ajudar a adicionar a esse script a capacidade de verificar se a janela Security Agent está aberta e, se estiver, inserir o nome de usuário e a senha em seus campos relativos?

    
por stefmikhail 15.10.2011 / 04:38

1 resposta

2

Se você puder ir dormir em vez de desligar, isso não exigirá privilégios de administrador ou confirmação de outros usuários conectados:

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

Você também pode usar shutdown (ejeta os discos corretamente e assim por diante, mas você pode perder algumas alterações não salvas):

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

Uma função do shell que pode ser adicionada a ~/.profile ou ~/.bash_profile :

tmshut() { sudo -s -- 'tmutil startbackup -b && shutdown -h now'; }
    
por 15.10.2011 / 05:32