Execução de um script após um determinado período de inatividade

1

Eu sou relativamente novo na escrita de scripts e não consigo encontrar como fazer o que estou tentando fazer. Eu estou tentando ter um script pedir confirmação de entrada do usuário em um pop-up na tela por conveniência. Vamos dizer que faz isso a cada 24 horas. Se a entrada não for fornecida, ela exibirá um arquivo de texto (preferencialmente como um arquivo .doc) e terminará deixando o arquivo aberto. se a entrada for dada, ela será reinicializada por mais 24 horas. A entrada do usuário não precisa ser complicada, é simplesmente para que a confirmação humana seja redefinida.

Espero que exista algo que possa fazer isso. Agradeço antecipadamente por toda e qualquer ajuda.

    
por Nikki Fraser 13.12.2016 / 01:47

1 resposta

1

Aqui está um pequeno script que exibirá um pop-up a cada 24 horas, conforme solicitado (a parte sleep 24h ). Ao iniciar o script, você deve fornecer dois argumentos de linha de comando - o tempo para aguardar a entrada do usuário do pop-up e do caminho completo (!) Até o arquivo que deseja abrir. Exemplo:

./dialog_timeout.sh 3 /etc/passwd 

Como você mencionou isso é apenas para verificação humana, o script verifica apenas se o que foi retornado pelo diálogo de entrada não está vazio (porque o diálogo de entrada é eliminado pelo comando timeout após o tempo limite ser atingido, portanto a entrada será estar vazio). Então, em outras palavras, você deve digitar algo. Observe que, se você clicar em cancelar ou clicar em OK, mas sua entrada estiver vazia, o script assumirá a condição de falha e exibirá o documento quer.

Observação: as regras padrão para tornar os scripts viáveis são aplicáveis - armazene o arquivo de preferência em ~/bin e garanta que ele seja executável com chmod +x ~/bin/dialog_timeout.sh

#!/bin/bash
got_input()
{
    result=$(timeout  zenity --entry --text "Type something")
    if [ "x$result" != "x" ]
    then
        return 0
    else
        return 1
    fi
}

main()
{
    while true
    do
        if got_input ""
        then 
            sleep 24h
        else
            xdg-open ""
            exit 1
        fi
    done
}

main "$@"
    
por Sergiy Kolodyazhnyy 13.12.2016 / 03:14