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,FreeBDS, 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
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:
#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:
Boa sorte a todos!!
www.brunoodon.com.br