rendered paste bodyimport osimport asyncoreimport asynchatimport socketimport redef get_os_info(): data = os.popen('vmstat').read() #first two lines are formatting data = data.split('\n')[2] return data.split()class stat_chanel(asynchat.async_chat): def __init__(self,server,sock,addr): asynchat.async_chat.__init__(self,sock) self.set_terminator('\r\n\r\n') slef.request = None self.data = [] self.shutdown = 0 def collect_incoming_data(self,data): self.data += [data] def found_terminator(self): data = ''.join(self.data) self.data = [] if not self.request: self.request = data.split('\n')[0] req = re.compile('(?P<method>\S+?) (?P<page>\S+?) (?P<version>\S+?)?') req = req.match(self.request) if len(req.groupdict().keys()) != 3: self.shutdown = 1 else: self.push('HTTP/1.1 200 OK\r\n') self.push('Content-Type: text/plain\r\n\r\n') self.push(get_os_info())class stat_server(asyncore.dispatcher): def __init__ (self,port): asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET,socket.SOCK_STREAM) self.bind(('',port)) self.listen(5) def handle_accept(self): conn,addr = self.accept() stat_channel(self,conn,addr) srv = stat_server(80)print 'RUNNING SERVER ON PORT 80.'asyncore.loop()