#!/usr/bin/python import os, sys, time import BaseHTTPServer from subprocess import * HOST_NAME = '' PORT_NUMBER = 9000 CMD='echo' class WebHandler(BaseHTTPServer.BaseHTTPRequestHandler): def init(cls, cmd): WebHandler.cmd=cmd init = classmethod(init) def do_GET(self): """Respond to a GET request.""" self.send_response(200) self.end_headers() (slash, _cmd_, args)=self.path.partition(self.cmd) if _cmd_ != self.cmd: self.wfile.write("Not implemented") return args=[s for s in args.split('+') if s] p = Popen([self.cmd]+args, stdin=PIPE, stdout=PIPE) if "content-length" in self.headers: p.stdin.write(self.rfile.read(int(self.headers["content-length"]))) self.wfile.write(p.communicate()[0]) do_POST = do_GET def usage(): print ''' to_web.py -p CMD''' sys.exit(0) if __name__ == '__main__': server_class = BaseHTTPServer.HTTPServer if len(sys.argv) == 1: usage() elif len(sys.argv) == 2: CMD=sys.argv[1] elif len(sys.argv) == 3: CMD=sys.argv[2] if sys.argv[1].startswith("-p"): PORT_NUMBER=int(sys.argv[1].split("-p")[1]) else: usage() else: usage() WebHandler.init(CMD) httpd = server_class((HOST_NAME, PORT_NUMBER), WebHandler) print time.asctime(), CMD, "server started - %s" % (PORT_NUMBER) try: httpd.serve_forever() except KeyboardInterrupt: pass httpd.server_close() print time.asctime(), CMD, "server stopped - %s" % (PORT_NUMBER)