Use o sinalizador -u
para python:
cat printdelay.py | ssh user@host python -u
O comportamento que você está vendo é porque ao gravar para stdout quando o stdout não é um dispositivo interativo, como um tty ou pty, a família de funções printf
libera o buffer com menos frequência . Não há muito o que fazer sobre isso, exceto dar um Python, como você descobriu. Isso vai funcionar:
scp printdelay.py user@host:/tmp/timedelay.py
ssh -t user@host python /tmp/timedelay.py
(Se você apenas cat timedelay.py | ssh -tt user@host python
, o python terá um arquivo e ele irá liberar o buffer com mais freqüência, mas você terá outros problemas, por exemplo, seu script será impresso no stdout devido à maneira como a alocação de pty funciona ssh.)
Você também pode tentar usando o comando coreutils stdbuf .