Arquivando arquivos de log em dois hosts diferentes

1

Estou tentando localizar dois arquivos de log em hosts diferentes e usar a saída mesclada como um único.

ssh HOST_1 "tail -f MY_LOG_FILE"

Eu também estou usando o mkfifo para criar um pipe nomeado.

mkfifo MY_PIPE

O problema é. A saída de um comando local para MY_PIPE funciona bem, mas quando eu envio meu comando ssh nada pode ser lido no pipe nomeado (tail -f MY_NAMED_PIPE em outro terminal)

mkfifo MY_PIPE

ssh HOST_1 "tail -f MY_LOG_FILE" > MY_NAMED_PIPE

Os comandos acima não geram saída no pipe.

Existe algum parâmetro para o comando ssh para canalizar corretamente?

Existe outra maneira de canalizá-lo?

    
por Rafael Borja 16.01.2015 / 22:57

3 respostas

1

ssh HOST_1 "tail -f MY_LOG_FILE" > MY_NAMED_PIPE

O programa final irá armazenar em buffer sua saída em blocos de 8 KB ou mais, porque não está gravando em um TTY. Se MY_LOG_FILE não estiver muito ativo, talvez você não esteja vendo nenhuma saída. Mesmo se estivesse funcionando, a cauda não está escrevendo linhas inteiras de cada vez, então a saída de várias instâncias finais seria muito confusa.

Você pode dizer ao ssh para executar o comando tail usando um TTY. Isso deve fazer com que tail armazene sua saída por linhas. Isso deve produzir melhores resultados.

ssh -tt HOST_1 "tail -f MY_LOG_FILE" > MY_NAMED_PIPE

Você pode consultar a página de manual do ssh aqui .

    
por 17.01.2015 / 14:43
0

Eu apenas fiz o seguinte:

mkfifo MY_PIPE
ssh HOST_1 "tail -f /var/log/messages" > MY_PIPE

Na máquina local eu corri:

tail -f /var/log/messages > MY_PIPE

Em outro terminal na máquina local:

cat < MY_PIPE

A saída dos comandos remoto e local tail -f /var/log/messages é visível.

O tutorial que eu segui é do Linux Journal

    
por 17.01.2015 / 00:07
0

Você também pode usar tee com a opção append (- a) para mesclar o conteúdo.

No terminal 1

ssh HOST_1 "tail -f /path/to/file" | tee -a /path/to/merged/contents

No terminal 2

ssh HOST_2 "tail -f /path/to/file" | tee -a /path/to/merged/contents

No terminal 3

tail -f /path/to/merged/contents
    
por 17.01.2015 / 06:54