Vous êtes sur la page 1sur 5

howtoday.com.

br Professor Bruno Odon

Hospedagem de Shell Script em servidor HTTP

Os scripts de Shell, sejam em linguagem BASH ou outro interpretador de comandos, são peça fundamental para
diminuir o tempo gasto com inúmeras linhas de comandos em servidores Linux,FreeBSD, Solaris, etc. O grande
problema é quando um cliente Windows precisa executar esta aplicação remotamente ou até quando se quer
construir uma interface mais "user friendly" para o programa.

Uma solução bem legal para este tipo de entrave é hospedar o script de Shell em um servidor Apache,
tornando-o acessível via Web Browser por qualquer workstation com qualquer navegador, ou seja: o programa
vai se tornar um CGI.

Para este exemplo vamos utilizar o seguinte cenário:

•Servidor: Debian 6 - X86_64


•Web server: Apache2
•Interpretador de comandos: BASH 4
•IP do servidor: 192.168.1.103

INSTALAÇÃO/CONFIGURAÇÃO DO APACHE2:

Instalando através de repositório APT:


#apt-get install apache2 -y

Agora temos que habilitar o funcionamento de CGI no Apache, assim como criar um Alias para o diretório onde
vão ficar os scripts que vão ser executados:

#vim /etc/apache2/sites-available/default

Nas linhas acima estamos carregando o módulo mod_cgi.so do Apache, o que habilita a interpretação de
aplicações CGI pelo serviço. Também estamos dizendo que o diretório onde será hospedada a aplicação será
o /usr/lib/cgi-bin, mas para o usuário o acesso será feito no alias /shell, por exemplo:
http://192.168.1.103/shell/index.sh.

Como em qualquer alteração em qualquer site do Apache, vamos recarregar o serviço:


#/etc/init.d/apache2 reload

*No caso do Red Hat, todo esse procedimento (feito ate agora) precisaria ser feito de outra forma.
howtoday.com.br Professor Bruno Odon

Agora que a parte do Apache já está configurada, vamos ao script:

CRIANDO O SCRIPT

Tomarei como exemplo um script de backup de usuários do sistema (bem simples):

Criando o Index:

#vim /usr/lib/cgi-bin/index.sh

Repare que o "action" aponta para um arquivo chamado bkp.sh, que será efetivamente a aplicação que vai
executar o backup. Vamos agora criar esta aplicação:

#vim /usr/lib/cgi-bin/bkp.sh
howtoday.com.br Professor Bruno Odon

Explanando o script:

Primeiramente, vamos criar uma variável para a data, que vai receber a data do dia no formato dia-mês-ano,
para que o arquivo de backup seja exclusivo para cada dia.

A variável 'login' vai receber os dados da página index.sh no seguinte formato: login=valor, portanto, para
ficarmos apenas com o campo do valor, precisamos dar um "print" nessa variável obtendo apenas o campo do
valor, o que está sendo feito na criação da variável 'usr'.

A variável homedir vai buscar o diretório pessoal do usuário dentro do arquivo /etc/passwd (melhor forma de
saber exatamente qual o homedir do usuário).

APLICANDO AS PERMISSÕES E EXECUTANDO A APLICAÇÃO:

Não podemos esquecer de que o usuário utilizado pelo Apache para ler e executar as páginas é o www-data (que
tem por grupo primário o www-data), sendo assim, vamos criar o diretório de backup e mudar o dono para
www-data:

#mkdir /backup && chown www-data /backup

É também importante que os arquivos de script sejam executáveis:


howtoday.com.br Professor Bruno Odon

#chmod +x /usr/lib/cgi-bin/index.sh

#chmod +x /usr/lib/cgi-bin/bkp.sh

Agora vamos testar tudo isso em um browser qualquer de qualquer cliente:

Como resultado:

Vamos conferir se realmente o backup foi feito no diretório /backup do servidor:


howtoday.com.br Professor Bruno Odon

Vous aimerez peut-être aussi