Cómo montar un servidor elemental (web o de otra cosa) para hacer pruebas

La idea es disponer de un programa simple que simule un servidor web en un cierto puerto, para así poder probar que tenemos acceso a ese puerto, empleando algún protocolo adecuado. En los ejemplos de más abajo se implementan servidores web, pero adecuando el protocolo, se podría implementar cualqier servicio.

Netcat (nc)

Referencia:

#!/bin/bash
while true 
do 
	echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n<h1>hello world from $(hostname) on $(date)</h1>" |  nc -vl 8080; 
done

Python:

Python2: SimpleHTTPServer

Referencia:

import SimpleHTTPServer
import SocketServer
 
PORT = 8000
 
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
 
httpd = SocketServer.TCPServer(("", PORT), Handler)
 
print "serving at port", PORT
httpd.serve_forever()

También se puede ejecutar el módulo por sí sólo:

python -m SimpleHTTPServer 8000

este servidor servirá archivos que se encuentren en el directorio donde está corriendo o en sus subdirectorios.

Python3: http.server

python3 -m http.server

Por defecto hace bind a 0.0.0.0 y usa el puerto 8000, así que el navegador debe apuntar a: http://0.0.0.0:8000. Lo que devuelve es el listado del directorio donde está corriendo.