Servidor HTTP em Bash
Publicado por Eduardo 01/02/2008
[ Hits: 6.075 ]
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
Protegendo arquivos contra acessos simultâneos
Script de instalação do Xorg 7.2 modificado para processadores AMD64
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ATUALIZANDO QUOTA
Nenhum comentário foi encontrado.
DOOM clássico (quase) vanilla e um pouco melhorado
Mamãe, quero descompactar e também compactar arquivos no terminal!
Instalando Micosoft Edge no Fedora 40
junest - Mini Arch Linux dentro de sua Distro
Rescuezilla - o Clonezilla com interface gráfica e ferramentas
Latte Dock, um dock de aplicativos com várias opções de configuração para o KDE Plasma
Porque não tenho os 450GB do meu HD ? Só está livre 15GB (7)
Quais suas extensões favoritas? (6)