Nessa dica ajudo a mostrar como habilitar a execução de comandos Shell dentro de páginas web, por meio de
CGI no
Apache2.
Habilitar módulo cgi
Certifique-se de que o módulo cgi esteja sendo carregado no arquivo "/etc/apache2/mods-available/cgi.load":
sudo nano /etc/apache2/mods-available/cgi.load
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
Agora verifique-se que ele esteja habilitado no arquivo "/etc/apache2/mods-enabled/cgi.load":
sudo nano /etc/apache2/mods-enabled/cgi.load
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
Obs.: Se nos dois arquivos essa linha estiver comentada, com um '#" no inicio, retire-o e salve o arquivo.
Agora que temos o módulo habilitado, precisamos informar ao Apache qual o formato a ser manipulado para cgi-script no arquivo "/etc/apache2/mods-enabled/mime.conf", no meu caso usei o tradicional '.sh'
Abra o arquivo com seu editor de texto:
sudo nano /etc/apache2/mods-enabled/mime.conf
Procure a linha:
#AddHandler cgi-script .cgi
Deixe-a assim:
AddHandler cgi-script .cgi .sh
Preparando o Ambiente
Agora você precisa habilitar o parâmetro 'ExecCGI' dentro de 'Options' na referência ao diretório virtual do Apache2, no meu caso não modifiquei o padrão (/var/www), em vez disso criei um novo alias para um novo diretório criado para brincar com o shell.
E além disso, precisamos ter um diretório o usuário do Apache, no caso o 'www-data', tenha poderes. Então fiz:
$ sudo mkdir /home/shell
$ sudo chmod 771 /home/shell
$ sudo chown www-data /home/shell
$ sudo chgrp rai3mb /home/shell
Ok, criei o diretório, deixei o 'www-data' como usuário dono dele e como grupo o do meu usuário 'rai3mb', para que eu possa manipular arquivos com meu usuário.
Agora basta criar o diretório virtual no apache apontando para o '/home/shell', edite o arquivo "/etc/apache2/sites-available/default":
sudo nano /etc/apache2/sites-available/default
#!/bin/bash
echo Content-type: text/html
echo
#---------------------------------------------------
read DADOS
FRASE=$(echo "$DADOS" | cut -d'=' -f2 | tr '+' ' ')
LANG=$(echo "$DADOS" | cut -d'=' -f3)
#---------------------------------------------------------------------------------------------------------
touch frase.mp3
wget -q -U Mozilla -O frase.mp3 "http://translate.google.com/translate_tts?ie=UTF-8&tl=$LANG&q=$FRASE"
cat <<FIM
<EMBED SRC='frase.mp3' AUTOSTART=FALSE LOOP=FALSE name='musica' id='musica'>
FIM
echo "<br/>Dados recebidos: <b>$DADOS</b>"
Obs.: Script baseado em:
Script: Transformar eBook em Audiobook
Basta salvar dentro do diretório que você criou, no meu caso /home/shell, dar permissão de execução para o arquivo 'form_teste.sh', e chamar no Browser:
http://localhost/shell/pag_teste.html

pag_teste.html

form_teste.sh
Até a próxima.
@rai3mb
Boa Madrugado rai3mb, tudo bem?
Estou com um sério problema.
Tenho um servidor Ubuntu em uma Escola, e preciso gerenciar ele por meio de um sistema em php, porem, apesar de seguir todos os passos do seu tutorial o meu script aparece com o erro 403 Forbidden, e não consigo executar.
Por favor me ajude se puder.
Agradeço desde já,
Abraços
Mauro Marssola