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.

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"

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.