Como tratar o arquivo txt remoto como stream?

1

Um serviço da web grava sua saída em um arquivo de texto.

Eu posso buscar esse log via:

curl -u user:password -k https://log.my-app.com/log.2016-04-04.txt

No entanto, isso sempre busca apenas um arquivo "completo" atual, embora ainda esteja sendo gravado.

Eu quero buscar o arquivo txt remoto como se fosse um fluxo e tê-lo constantemente atualizado depois de um minuto, mas mostrar apenas o conteúdo atualizado.

É algo assim possível usando o curl?

    
por k0pernikus 04.04.2016 / 15:46

2 respostas

1

Você está procurando os argumentos -C --continue-at e -f --fail .

curl -f -# -u user:password -k -C - -O https://log.my-app.com/log.2016-04-04.txt

Sem -f , o arquivo de saída será anexado com html do erro 416 (intervalo inválido).

    
por 04.04.2016 / 16:27
1

Você pode usar curl -C - em um loop para obter apenas o que foi adicionado e usar tail -f no arquivo local para observar os novos dados. O servidor remoto tem que permitir esse tipo de acesso.

Se isso não ocorrer, use N=$(stat -c %s file) no arquivo local para encontrar seu tamanho e, em seguida, canalize o curl através de tail -c +N | tee -a file para obter o novo material no arquivo e stdout.

    
por 04.04.2016 / 16:29