Streaming de conteúdo do arquivo de log (canalização)

1

Estou tentando entender como a tubulação funciona e estou preso neste momento.

Um arquivo de log está sendo transmitido e sua saída está sendo canalizada para pigz. O que estou tentando fazer é redirecionar o conteúdo pigz para um script python como stdin.

Não consigo descobrir como redirecionar os dados para o script

Atualmente funciona:

./customread file_name | pigz -dc

Isso mostra o conteúdo do log no stdout. Como canalizá-lo para o script daqui?

eu tentei

python script.py < `./customread file_name | pigz -dc`

Eu quero redirecionar os dados como eles entram ..

Kay
fonte

Respostas:

2

Não estando muito familiarizado com o que você está tentando acessar, mas acho que você pode simplesmente usar outro canal aninhado. Eu fiz semelhante no bash e zsh. Com a saída do pigz para stdout com -c, basta direcioná-lo para o script python procurando stdin.

./customread file_name | pigz -dc | python script.py

Você já tentou algo como acima? Funcionou para mim quando tentei;

tail -f /var/log/syslog | grep `hostname` | python test.py

Aqui está o Python que usei, cortesia desta postagem do Stackoverflow:

#!/usr/bin/python                                                   
import sys 
import os

while True:
    line = sys.stdin.readline()
    if not line:
        break
    sys.stdout.write(line) # or print, doesn't matter.
Krondor
fonte