Friday, July 15, 2016

python: Simple http server with CGI scripts enabled

If you want to experiment some python code as CGI script to serve by a HTTP server, you can get started by these steps:

  1. Create a cgi-bin directory.
  2. Ready!

No, really, it's that simple! Try these CGI scripts out.

Example 1: cgi-bin/

#!/usr/bin/env python3

localvars_table = '<table>'
for x in dir():
  localvars_table += '<tr><td>%s</td></tr>' % x
localvars_table += '</table>'

print("Content-type: text/html")
<p>Hello World! Your custom CGI script is working. Here are your current Python local variables.</p>
<p>NOTE: If you want to write useful CGI script, try the Python 'cgi' module. See script.</p>
</body></html>""" % (localvars_table))

To test and run this, you simply invoke these couple commands:

bash> chmod a+x cgi-bin/
bash> python3 -m http.server --cgi

You may now test it on your browser with http://localhost:8000/cgi-bin/ Hit CTRL+C to stop the server.

If you want to do more with fancy CGI scripts, try the Python's cgi module. Here is another example.

Example 2: cgi-bin/

#!/usr/bin/env python3

import cgi

Again chmod your script and visit http://localhost:8000/cgi-bin/ You will see all the HTTP related data as expected when working with a CGI script. See for more details.