Envolva seu comando em um script que avisará quando terminar.
Se você tem um servidor SMTP disponível que aceita e-mails de saída do seu servidor, você pode usar isso.
O exemplo abaixo executará your-command
, capturará sua saída e stderr em um arquivo e, em seguida, usará malix
para enviar os resultados. Há certamente uma maneira muito melhor de garantir que o arquivo que a saída é capturada seja exclusivo do que usar a $$
pseudovariable (talvez use uma rotina que gere uma string aleatória).
#/bin/bash
your-command > /tmp/$$.$0.output 2>&1
RESULT=$?
echo >> /tmp/$$.$0.output
echo "Exit code $RESULT" >> /tmp/$$.$0.output
cat /tmp/$$.$0.output | mailx -s "your-command has finished with exit code $RESULT." [email protected]
rm /tmp/$$.$0.output
Se você quiser algo que permita especificar uma fila de comandos, procure em Task Spooler ( apt-get install tsp
no Debian) que permite adicionar e eliminar comandos de uma fila e acredito pode até enviar por e-mail a saída deles.
Lendo sua pergunta com mais cuidado ... parece que você está tratando o que a conexão SSH está inserindo / enviando como um fluxo de I / O bruto.
O SSH fornece um pipe criptografado e possui alguns recursos para o encaminhamento de portas, e não muito mais. A coisa típica conectada a esse pipe é um shell que geralmente espera um usuário interativo do outro lado.
Eu acho que chaves de propósito único podem alcançar o que você está tentando fazer com facilidade, mas O mais fácil é criar um pequeno script de wrapper que faça isso:
#/bin/bash
$@
echo "==== Command Output Finished ===="
e, em seguida, procure a string ==== Command Output Finished ====
em suas rotinas de I / O para determinar onde está o limite entre as saídas de comando. Claro que você tem que escolher algo que não poderia ser parte de uma saída válida para um comando. Um esquema mais elaborado é possível.
O SMTP faz algo semelhante com seus cabeçalhos de limite.