Conteúdo do arquivo de log de streaming (tubulação)

1

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

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

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

Isso atualmente funciona:

./customread file_name | pigz -dc

Isso mostra o conteúdo do log para stdout, como eu canalizo para o script a partir daqui?

Eu tentei

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

Eu quero redirecionar os dados conforme eles são recebidos.

    
por Kay 03.06.2013 / 22:38

1 resposta

2

Não está muito familiarizado com o que você está tentando acessar, mas acho que você pode usar apenas outro canal aninhado. Eu fiz semelhante em bash e zsh. Com pigz saindo para stdout com -c, apenas canalize isso para seu script python procurando por stdin.

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

Você já tentou algo como acima? Isso funcionou para mim quando eu tentei com;

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

Aqui está o Python que eu usei, cortesia de esta 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.
    
por 03.06.2013 / 23:09