O GoAccess não irá redirecionar sua saída como um script CGI

2

Eu tenho puxado meu cabelo com este script:

#!/bin/bash
echo Content-type: text/html
echo ""
goaccess -f /var/www/log/access.log -a | tee

Que funciona perfeitamente na linha de comando (gera saída HTML para access.log), mas quando eu o executo como um CGI via URL, a saída não é o HTML que estou esperando do GoAccess web analyzer, mas sim:

GoAccess - 0.7 

Usage: goaccess -f log_file [-c][-r][-m][-h][-q][-d][...]

The following options can also be supplied to the command: 
       -f - Path to input log file.
<snipped>

É como se estivesse executando goaccess sem nenhum parâmetro. Ou isso, ou os parâmetros que eu especifico no meu Bash CGI não estão sendo vistos por qualquer motivo.

Estou no final do meu juízo. Qualquer pessoa que tenha alguma experiência CGI que possa ajudar?

    
por Martin Naskovski 14.02.2014 / 19:56

1 resposta

2

Aparentemente, se você usar -f para especificar o arquivo de log, uma verificação será feita para ver se stdin é um tty interativo e, se não, o programa existe. De goaccess.c (linha 792 para a versão 0.7):

if (conf.ifile != NULL && !isatty (STDIN_FILENO))
    cmd_help ();

Usar cat para enviar o arquivo de log por meio de um pipe funciona, mas também precisei especificar onde um arquivo de configuração poderia ser encontrado:

cat /var/www/log/access.log | goaccess -p /home/brm/.goaccessrc -a
    
por 14.02.2014 / 21:15