Registrando a saída de comandos remotos em múltiplos servidores ssh sem atraso

5

Eu escrevi um script bash simples que ssh's em 3 hosts (2 remotos, 1 meu próprio para testes) e executa um programa GUI de longa execução que envia texto para o terminal que eu gostaria de registrar.

#!/bin/bash
ssh -f -X user@remote1 '(python -u long_running_program.py &> ~/log1.txt)'
ssh -f -X user@remote2 '(python -u long_running_program.py &> ~/log2.txt)'
ssh -f -X user@localhost '(python -u long_running_program.py &> ~/log3.txt)'
multitail -s 3 ~/log*

A partir do acima, o ssh é chamado com o parâmetro f para ser executado em segundo plano e permitir que o script continue a execução. No servidor remoto, o programa python é chamado com o comutador sem buffer e a saída é redirecionada para um arquivo de registro (note que os diretórios home das máquinas remotas e locais estão todos em uma unidade montada em rede, assim usando ~ fornece o mesmo caminho em todos deles).

O acima tecnicamente funciona, no entanto, os 2 logs (log1, log2) da máquina remota são muito lentos para serem atualizados. Pode ser de 20 segundos antes que o arquivo seja atualizado (independentemente de você estar usando multitail, vi, etc. para visualizar o arquivo), enquanto a atualização do arquivo de log local (log3) é imediata.

Para confirmar que isso não deveria estar acontecendo, posso ssh manualmente nos controles remotos e executar o programa sem redirecionar a saída para o arquivo. A saída é transmitida continuamente sem atraso, conforme esperado. Eu também tentei várias coisas, como tentar desativar o buffer e usando script / tee / etc sem sucesso.

Alguém sabe o que está causando isso e / ou como resolvê-lo?

    
por user67081 06.09.2017 / 01:44

1 resposta

0

Eu sugiro usar pssh que foi projetado especificamente para executar várias sessões SSH paralelas, em vez de executar vários SSHs em série comandos simultaneamente.

Por exemplo,

pssh -i -H user@remote1 -H user@remote2 -H user@localhost '(python -u long_running_program.py &> ~/log$PSSH_NODENUM.txt)'
    
por 21.11.2017 / 05:27