redirecionamento com falha para o programa CGI

2

Estou tentando redirecionar o conteúdo da saída do comando para um arquivo em um programa CGI. O problema para mim é que o arquivo de saída não está sendo criado.

O trecho de código CGI é o seguinte:

#!/bin/bash

echo "Content-type: text/html"
echo ""

echo "<html>"
echo "<body>"

'mysql -u root -predhat -H  -D mysql -e "select host,db from  db;" > output.txt'

 echo "</body>"
 echo "</html>" 

O script CGI está sendo chamado de um programa HTML. Além disso, posso usar INTO OUTFILE com um comando mysql , mas quero que o redirecionamento de saída funcione para qualquer comando.

As propriedades são as seguintes:

  #ls -l /var/www/cgi-bin/example.sh
  -rwxr-xr-x 1 root root 839 Apr 11 21:34 /var/www/cgi-bin/example.sh

# ps -ef | grep httpd root 2442 1 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2464 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2465 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2466 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2467 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd apache 2468 2442 0 19:30 ? 00:00:00 /usr/sbin/httpd

Como posso resolver o problema?

    
por Zama Ques 11.04.2014 / 11:31

1 resposta

1

Primeiro, esta configuração de script para que o usuário que está executando o seu servidor da web (Apache, estou supondo) possa executá-lo? Você pode verificar observando as permissões do script:

$ ls -l somescript.cgi
-rwxrwxr-x. 1 apache apache 1199 Jan 17 20:47 somescript.cgi

Você desejará as permissões de forma que qualquer pessoa possa executá-lo ou, se o script pertencer ao usuário apache , pelo menos, apenas o proprietário poderá executá-lo.

Se esse for o caso, eu me concentrarei na localização da saída do comando mysql . O Apache provavelmente não pode gravar no local em que mysql está tentando gravar o arquivo output . Eu faria isso uma localização física real assim:

mysql -u root -predhat -H  -D mysql -e "select host,db from  db;" \
    > /tmp/output.txt

Além disso, os backticks são desnecessários, então você pode tirá-los.

    
por 11.04.2014 / 12:01