Servidor HTTP em Bash
Publicado por Eduardo 01/02/2008
[ Hits: 6.409 ]
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
Gerenciamento de logs em servidores de aplicação
Criação de servidores de arquivos simples com Samba
Nenhum coment�rio foi encontrado.
O que é o THP na configuração de RAM do Linux e quando desabilitá-lo
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Deixando o Plasma6 mais fluido no Linux
Como unir duas coleções de ROMs preservando as versões traduzidas (sem duplicatas)
Isso acontece com vcs também? (7)
Problema com audio apos upgrade (10)
Instalação automatizada do Debian 12 em UEFI (2)