Contenido

Servidor web en Bash, tan solo 20 líneas

16 Abr

+ 9

Si el otro día vimos MoleSter, y sus 6 líneas de código. Ahora mediante un simple fichero Bash, puedes crearte un Webserver con solo 20 líneas de código.

#!/bin/bash
# web.sh -- http://localhost:9000/hello?world

RESP=/tmp/webresp
[ -p $RESP ] || mkfifo $RESP

while true ; do
( cat $RESP ) | nc -l -p 9000 | (
REQ=`while read L && [ " " "<" "$L" ] ; do echo "$L" ; done`
echo "[`date '+%Y-%m-%d %H:%M:%S'`] $REQ" | head -1
cat >$RESP <<EOF
HTTP/1.0 200 OK
Cache-Control: private
Content-Type: text/plain
Server: bash/2.0
Connection: Close
Content-Length: ${#REQ}

$REQ
EOF
)
done

¿Algún linexero que se anime a probarlo?

Se vale llamar a netcat? Trampa jajaja

jeje pos esta bien, funcionar funciona jeje devuelve peticiones y demas … si uno se lo curra un poco mas hasta puede servir paginas estaticas :P

Sep, devuelve las peticiones… Se ve liviano, como para un server pequeño… Quizás para una fonera :P

Yo pense que bash se encargaba de abrir y cerrar los sockets…

Me siento timado :P

Pero interesante de cualquier manera.

todo reside en el comando nc jejeje, maravilloso por cierto :P

nc es para abrir un socket, -l es para que se quede escuchando y luego escribe la respuesta que le dices al socket, por lo tanto el cliente recibe eso, sin más. Como curiosidad está bien, pero no es que sea muy útil y/o algo nuevo.

Un servidor web en dos lineas, :P
#!/bin/sh
PATH_APACHE2=/usr/bin/apache
${PATH_APACHE}/apache2

Pues va ser que no ande el experimento ..no por lo menos en gentoo ..
una imagen de prueba
http://i173.photobucket.com/albums/w67/abrahamtamayo/server-bash.png

@Blaxter .. creo que el codigo trataba de hacer lo que hace apache, en cambio lo que has puesto es invocar al servidor apache el cual debe de estar instalado ..

Creo que el servidor web mas liviano seguira siendo cherokee “escrito en C++”
Gracias Alvaro Lopez

hmm…

y a ti no se te ocurrio por casualidad ponerle el ./nb <===

acuerdate que cuando no cargas el comando a la libreria tienes que “ejecutarlo a pie”…

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.