Servidor HTTP em Bash
Publicado por Eduardo 01/02/2008
[ Hits: 6.336 ]
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.
#!/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
SCRIPT PARA INSTALAÇÃO DE PROGRAMAS NO LINUX
Adicionar/Deletar Usuarios Samba/Sistema
Manutencao de arquivos no Squid-Cache
Gerência do tempo de inicialização das MFs de uma nuvem privada com o OpenNebula
Gerenciamento de espaço em disco
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Jogos baixados na Central de Aplicativos mas que não abrem (1)
debian com wayland, configuracao de teclado. Mudou Tudo! [RESOLVIDO] (1)
Iinstalar o Scanner Kodak i940 no Linux Mint 19/20? (3)
Pastas da raiz foram para a área de trabalho [RESOLVIDO] (11)