Notificação simples sobre conclusão do programa

2

Estou correndo algo enquanto ssh'ed em uma máquina (através de mosh). Eu usaria o sendmail para obter uma notificação sobre a finalização de um programa, mas esta máquina não pode se conectar à rede por motivos de segurança.

Existe alguma maneira de obter uma notificação na minha máquina local quando o programa terminar?

Editar: Especificamente, uma vez que eu tenha logado na máquina remover, eu gostaria de ter uma notificação de algum tipo na máquina local enquanto permanecer na mesma sessão ssh.

    
por bear 23.07.2015 / 00:01

2 respostas

0

Você não precisa enviar o e-mail da máquina estrangeira. A máquina local pode enviar um email na conclusão do comando:

ssh host cmd ; echo "It's done." | mail me@somewhere -s Completion

Se você precisar permanecer logado na máquina remota, ainda poderá monitorar o progresso de seu comando. Como exemplo:

$ ssh host 'cmd1 ; echo Done $?; cmd2' | { while read a b; do [ "$a" = "Done" ] && echo "It's done with code $b." | mail me@somewhere -s Completion; done; }

Acima, cmd1 ; echo Done $?; cmd2 é executado no computador remoto. Com o loop while , o computador local monitora o progresso e envia um e-mail quando cmd1 foi concluído.

    
por 23.07.2015 / 00:16
2

Existem várias soluções para notificar localmente no final de um script, aqui estão duas:

Use o caractere de bipe no final, que dá um som audível:

ssh user@host /path/to/script; echo -e '\a' > $(tty)

Você pode ejetar o drive de CD (meu favorito; não importa o que você faça, você será notado :-). Além disso, se você for embora e voltar ou trancar a máquina, você a verá.

ssh user@host /path/to/script; eject
    
por 23.07.2015 / 00:22

Tags