tail -f equivalente para um URL

9

Eu quero monitorar o arquivo de log do meu aplicativo, que, no entanto, não funciona localmente, mas em uma plataforma SaaS e é exposto por HTTP e WebDAV. Então, um equivalente de tail -f que funciona para URLs faria um ótimo trabalho para mim.

P.S. Se você souber de outras ferramentas que podem monitorar arquivos remotos via HTTP, também pode ser útil. Obrigado

    
por munch 03.12.2012 / 13:39

3 respostas

9

Pode haver uma ferramenta específica para isso, mas você também pode fazer isso usando o wget. Abra um terminal e execute este comando:

while(1); do \
    sleep 2; \
    wget -ca -O log.txt -o /dev/null http://yoursite.com/log; \
done

Isso fará o download do arquivo de registro a cada dois segundos e salvará em log.txt anexando a saída ao que já está lá ( -c significa continuar baixando e -a significa anexar a saída ao nome do arquivo fornecido). O -o redireciona as mensagens de erro para /dev/null/ .

Portanto, agora você tem uma cópia local do log.txt e pode executar tail -f :

tail -f log.txt 
    
por 03.12.2012 / 14:22
2

Eu respondi a mesma pergunta sobre aqui com um script de shell completo que usa o URL como argumento e tail -f isto. Aqui está uma cópia dessa resposta textualmente:

Isso fará isso:

#!/bin/bash

file=$(mktemp)
trap 'rm $file' EXIT

(while true; do
    # shellcheck disable=SC2094
    curl --fail -r "$(stat -c %s "$file")"- "$1" >> "$file"
done) &
pid=$!
trap 'kill $pid; rm $file' EXIT

tail -f "$file"

Não é muito amigável no servidor web. Você pode substituir o true por sleep 1 por consumir menos recursos.

Como tail -f , você precisa de ^C quando terminar de assistir a saída, mesmo quando a saída estiver concluída.

    
por 05.01.2018 / 19:03
0
A curva

com opção de faixa em combinação com o relógio pode ser usada para conseguir isso:

RANGES

HTTP 1.1 introduced byte-ranges. Using this, a client can request to get only one or more subparts of a specified document. Curl supports this with the -r flag.

watch -n <interval> 'curl -s -r -<bytes> <url>'

Por exemplo

watch -n 30 'curl -s -r -2000 http://yoursite.com/log'

Isso recuperará os últimos 2000 bytes do log a cada 30 segundos.

Observação: para https com assinatura automática, use a opção "curvar" segura

    
por 16.10.2016 / 17:30