Surgió un problemática en el trabajo, debíamos debuguear lo que estaba sucediendo en unos Solr que se encontraban en el datacenter y la única via de acceso a los logs era por medio de un webserver.

Seguramente alguien desarrollo alguna herramienta para hacer los mismo que hacemos con nuestro querido tail, pero con files que se encontraban accesible via HTTP. Pero lamentablemente o no, yo no encontre ninguna, y lo primero que se me vino a la mente es el resume, que tienen algunas utilidades de download.

Así que hechando mano a algunas herramientas disponible en la mayoría de los UNIX (bash, curl, awk, wc, cat), y después de un rato de darle vuelta salió este engendro, que si bien no tiene mucho diseño, ni patrones, ni nada por el estilo, increiblemente funciona :) . Por si alguno tiene la misma problemática acá les dejo esta pequeña porción de código, espero les sirva

URL='http://example.com/access.log'; \
SIZE=$(curl -I "$URL" 2> /dev/null | awk '/Content-Length:/ {printf("%d", $2)}'); \
while [ 1 ]; do \
curl -r$SIZE- "$URL" > /dev/null > out; cat out; \
LEN=$(cat out | wc -c); \
SIZE=$(expr $SIZE + $LEN ); \
sleep 1; \
done

La salida se puede combinar con otro comando (siguiendo la filosofía UNIX)

URL='http://example.com/access.log'; \
SIZE=$(curl -I "$URL" 2> /dev/null | awk '/Content-Length:/ {printf("%d", $2)}'); \
while [ 1 ]; do \
curl -r$SIZE- "$URL" 2> /dev/null > out; \
cat out; \
LEN=$(cat out | wc -c); \
SIZE=$(expr $SIZE + $LEN ); \
sleep 1; \
done | grep foo