Cómo crear un simple servidor web con 5 líneas de bash

Estos días el blog ha estado un poco animado con el tema de los servidores, nuestro amigo Fico nos ha ido dando cátedra sobre las redes de computadoras en su serie Redes de Computadoras para las PYMES, además de un par de artículos para instalar y configurar servidores web en Cómo instalar y configurar XAMPP en GNU/Linux y Cómo instalar NGINX con Google Page Speed en Ubuntu automáticamente.

Cómo el mundo del software libre es tan nutrido, a veces simple y otras veces un poco más complejo, el día de hoy le traemos un pequeño bash de 5 líneas, que nos permite crear un simple servidor web.

Shinatra

Shinatra es el nombre del  bash realizado por Ben Rady y que ha sido distribuido de manera libre, es tan efectivo como preciso, simplemente creamos o descargamos el bash con las líneas de código necesarias y ejecutamos el bash con el puerto + el mensaje que deseamos alojar.

Este script que nos permite crear un simple servidor web, funciona en diversas distros GNU/Linux y en OS X, no necesita instalación, es flexible en las rutas que se desean usar, permite todo tipo de contenido, además de que puede a llegar a ser una herramienta muy útil, en el caso de que desees colocar información de manera rápida en cualquier servidor.

Cómo usar Shinatra

Shinatra está compuesto por las siguientes líneas de código:

#!/bin/bash
RESPONSE="HTTP/1.1 200 OK\r\nConnection: keep-alive\r\n\r\n${2:-"OK"}\r\n"
while { echo -en "$RESPONSE"; } | nc -l "${1:-8080}"; do
  echo "================================================"
done

Puedes simplemente crear un archivo .sh, con el nombre que desees y luego ejecutarlo de la siguiente forma:

./shinatra.sh [port] [response]

También puedes obtener el script actualizado desde los repositorios oficiales, para ello sigue los siguientes pasos:

git clone https://github.com/benrady/shinatra.git
cd shinatra/
./shinatra.sh 80 'Mensaje de Repuesta del Servidor'

Al script puedes enviarle lo que desees, por ejemplo:

Crear un simple servidor web

Sin duda alguna una manera rápida, sencilla y fácil de poner a funcionar un servidor web, la utilidad y el alcance del mismo es variada. ¿Cuál uso le darías a este script? ¿Te parece útil?.


7 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Gaspar Fernández dijo

    Hace un tiempo hice yo un script parecido en el que podías definir varias respuestas según la ruta y todo. No eran 5 líneas pero podíamos hacer varias cosas: http://totaki.com/poesiabinaria/2015/03/mini-servidor-web-con-bash-y-netcat-para-paginas-en-mantenimiento/

    Lo malo de hacerlo al estilo netcat es que no aprovechamos concurrencia, y los recursos se desperdician mucho, pero es un bonito experimento 🙂

  2.   Gonzalo Martinez dijo

    Otra forma es con python (que viene practicamente en todas las distros)

    sudo python -m SimpleHTTPServer 80

    Funciona distinto, esta forma sirve los archivos que esten en el directorio donde se ejecute el servidor, pero es otra forma simple

  3.   jose perez dijo

    otra con php es
    php -S 127.0.0.1:9000

  4.   Antonio Cifuentes dijo

    Este post lo leí hace un añito, por si quieren una lista completita de servidores web por linea de comandos.

    https://www.busindre.com/servidor_web_por_linea_de_comandos.

  5.   Eduardo Cuomo dijo

    Puedes transferir un archivo en un servidor que no tiene nada instalado, y no tienes permiso ROOT:

    #!/bin/bash
    file=»$1″
    port=8080

    n=»\r\n»
    body=»$(base64 «${file}»)»

    RESPONSE=»HTTP/1.1 200 OK»
    RESPONSE=»${RESPONSE}${n}Connection: keep-alive»
    RESPONSE=»${RESPONSE}${n}Content-Type: application/octet-stream»
    RESPONSE=»${RESPONSE}${n}Content-Disposition: inline; filename=\»${file}\»»
    RESPONSE=»${RESPONSE}${n}${n}${body}»

    while { echo -en «$RESPONSE»; } | nc -l «${port}»; do
    echo «================================================»
    done

    Luego, al recibirlo lo transformas nuevamente con «base64 -d filename»

  6.   Eduardo Cuomo dijo

    Hay muchos ejemplos más en:
    $ man nc

  7.   José María García dijo

    En Linux y macOS, se puede utilizar el administrador de shell y paquetes preferido. En Windows 10, puede instalar Windows Subsystem para Linux para obtener una versión de Ubuntu y Bash integrada con Windows, muy buen tutorial.

    https://clongeek.com/como-instalar-macos-desde-usb/