launchd: pergunta ao usuário antes de executar tarefas

4

Existe uma maneira de obter uma tarefa launchd definida pelo usuário (ou seja, como a desta pergunta ) para obter confirmação do usuário antes de executar a tarefa? Um pop-up como o de suspensão programada (com yes / no e um timer no caso de nenhuma entrada do usuário) seria ótimo, caso contrário, um pop-up yes / no simples funcionaria.

newenglander
fonte

Respostas:

4

Faça o launchd chamar isso de AppleScript. Ele exibe uma caixa de diálogo com um tempo limite e chama um script de shell se o usuário selecionou "Ok".

set timeoutInSeconds to 60
set abortOnTimeout to true

tell application (path to frontmost application as text)
    try
        set dialogResult to display dialog "Do you want to execute?" default button 2 giving up after timeoutInSeconds
        on error number -128
            return
    end try
end tell

if gave up of dialogResult and abortOnTimeout then
    return
end if

do shell script "/path/to/yourscript.sh"
LCC
fonte
1

Os agentes iniciados têm permissão para interagir com a GUI e até os daemons podem usar o osascript para exibir caixas de diálogo.

Você também pode usar algo assim em um script de shell:

osascript -e 'tell app (path to frontmost application as text)'
display dialog "Continue?"
end' || exit 0

O script sai com um erro se o usuário pressionar o botão Cancelar ou fechar a caixa de diálogo. Você também pode dizer a um processo em segundo plano como o SystemUIServer para exibir a caixa de diálogo, mas você precisará adicionar algo como activate application (path to frontmost application as text)para voltar o foco à janela anteriormente focada.

Lri
fonte