import tornado.ioloop import tornado.web import tornado.escape from sh import ping, ping6, traceroute ping = ping.bake(c=4) ping6 = ping6.bake(c=4) class PingHandler(tornado.web.RequestHandler): def get(self, address): output = ping(address) self.set_header("Content-Type", "text/plain") for line in output: self.write(line) self.finish() class Ping6Handler(tornado.web.RequestHandler): def get(self, address): output = ping6(address, _ok_code=[0,1]) self.set_header("Content-Type", "text/plain") for line in output: self.write(line) self.finish() class TraceHandler(tornado.web.RequestHandler): def get(self, address): output = traceroute(address) self.set_header("Content-Type", "text/plain") for line in output: self.write(line) self.finish() if __name__ == "__main__": application = tornado.web.Application([ (r"/ping/(.*)", PingHandler), (r"/ping6/(.*)", Ping6Handler), (r"/trace/(.*)", TraceHandler), ]) application.listen(8080) tornado.ioloop.IOLoop.instance().start()