O que seria necessário para adicionar um comando para executar um script na conclusão de qualquer tarefa aleatória?

2

Eu estava brincando com Pushover , e achei que seria legal se eu pudesse usá-lo como argumento em qualquer comando aleatório, para que fosse executado um script de pushover no final da tarefa, independentemente de qual era essa tarefa.

Eu não tenho ideia se é possível, ou como eu faria isso, mas gostaria de aprender.

Esta pergunta no site do RasPi Stack Exchange é o que me fez pensar sobre isso. Mas eu acho que há muitas coisas para as quais seria útil, como avisar quando o trabalho de compilação está finalmente terminado e, talvez, se foi bem-sucedido.

Eu achei que poderia ser algo como:

     $ apt-get -b source packagename -pushover "Compile job complete."

O pensamento é que o argumento '-pushover [inserir o texto da mensagem aqui]' após qualquer comando executaria o script pushover e usaria a API para notificá-lo por meio do aplicativo.

Então eu acho que a pergunta é, é possível fazer desta maneira? Se sim, por onde eu começo? Se não, existem maneiras melhores de realizar a mesma coisa, sem se limitar a qual comando você está executando?

Não estou preso à idéia de usá-lo como um argumento de comando, mas quero uma maneira de executá-lo com qualquer comando, sem escrever um script separado para cada um deles.

Sou novo no Linux, portanto, se for uma ideia não-inicial, também receberei essa resposta, desde que haja explicações lógicas do motivo pelo qual não funcionará.

    
por zenbike 10.08.2012 / 15:02

2 respostas

5

Você faz o inverso:

$ pushover-notify "This is my message" command arg1 arg2

Seu script pushover-notify poderia ser algo assim:

#!/bin/sh
TOKEN=your_token
USER=your_user
MSG="$1"
COMMAND="$2"
shift 2
if "$COMMAND" "$@" ; then
   # here run your send-message script, with message "$MSG". for example:
   curl -s \
        -F "token=$TOKEN" \
        -F "user=$USER" \
        -F "message=$MSG" \
        https://api.pushover.net/1/messages
else
   # here send some message indicating failure, or don't do anything. for example:
   curl -s \
        -F "token=$TOKEN" \
        -F "user=$USER" \
        -F "message=command failed: $COMMAND $@" \
        https://api.pushover.net/1/messages
fi
    
por 10.08.2012 / 15:13
2

Eu tenho meus programas enviando e-mails ou bipes no console quando eles terminam. Eu uso o & & personagem que diz ao console para esperar o comando anterior terminar e eu termino a coisa toda com outro & para obter o controle do console de volta.

Assim, o seu exemplo ficaria assim:

apt-get -b source nome_do_pacote & & sleep 10 & & pushover "Compile job complete". &

Eu adiciono o sono 10 para uma boa medida. Note que não conheço a sintaxe de pushover.

Além disso, sem usar o pushover, você pode gostar de usar o mailx para enviar e-mails ou mensagens de texto, ou echo -a "\ a" para bipar o console.

    
por 10.08.2012 / 18:25