Servidor HTTP em Bash

Publicado por Eduardo 01/02/2008

[ Hits: 6.197 ]

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

Descobrir se um número é par ou impar

Alterando resolução de monitor externo

INSTALA TAR GZ COM MENU GRÁFICO ZENITY

Remove linhas

DEBIAN MODO AP


  

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