Servidor HTTP em Bash

Publicado por Eduardo 01/02/2008

[ Hits: 6.027 ]

Download servidor.bash




Esse script é um servidor HTTP funcional que responde a métodos GET. Porém perceba que ele só serve para aprender bash script, pois ele é bem inseguro e ainda tem vários bugs.

Para fazer esse script eu precisei instalar o programa socket (# aptitude install socket). Como só dá para subir um script, eu não pude mandar um script de inicialização que fiz (está no código fonte). Para inicializá-lo digite (como root):

# socket -lcsp ./servidor.bash 80

Ele busca as páginas em /var/www por padrão.

  



Esconder código-fonte

#!/bin/bash
#Esse programa deve ser iniciado pelo script de inicialização "iniciaServidor"
#Esse lançador vai garantir que a entrada e a saída padrão desse script seja a porta 80 (a porta http)

#Pasta onde estão os arquivos do servidor
PASTA="/var/www"
#Arquivo padrão quando nenhum for especificado
INDEX="index.html"

#Lê da entrada padrão (no caso, a porta 80) e grava a primeira palavra em $METODO, a segunda em $PEDIDO e a terceira em PROTOCOLO
read METODO PEDIDO PROTOCOLO

#Esse servidor só entende métodos GET
if [ "$METODO" = "GET" ]
then
    #Método GET recebido: estão pedindo um arquivo
    #Se for encontrado e for uma pasta, retorna o INDEX
    if [ -d "$PASTA$PEDIDO" ]
    then
   PEDIDO="$PEDIDO$INDEX"
    fi
    #Se o arquivo não for encontrado...
    if [ ! -e "$PASTA$PEDIDO" ]
    then
   #Retorna um erro 404
   echo "HTTP/1.x 404 Not Found"
   echo "Date: `date -R`"
   echo "Server: Servidor Bash"
   echo "Content-Length: 0"
   echo ""
    else
   #Se for encontrado retorna o arquivo
   echo "HTTP/1.x 200 OK"
   echo "Date: `date -R`"
   echo "Server: Servidor Bash"
   echo "Content-Length: `stat -c%s $PASTA$PEDIDO`"
   echo "Connection:Close"
   echo ""
   cat "$PASTA$PEDIDO"
    fi
else
    echo "HTTP/1.x 501 Not implemented"
    echo ""
fi

#Abaixo segue como deve ser o script de inicialização.
iniciaServidor.bash:

#!/bin/bash
socket -lcsp ./servidor.bash 80

Scripts recomendados

Jftp Script - Script para automação de um processo FTP

Claro 3g Sony Ericsson md300 script conexao

DHCP Configurator

Barra de progresso em shell

NFS server/client com iptables


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts