52 lines · 1.2 KB · Python
RawDownload
#! /usr/bin/env python # Remote python server.# Execute Python commands remotely and send output back.# WARNING: This version has a gaping security hole -- it accepts requests# from any host on the Internet! import sysfrom socket import *import StringIOimport traceback PORT = 4127BUFSIZE = 1024 def main():    if len(sys.argv) > 1:        port = int(eval(sys.argv[1]))    else:        port = PORT    s = socket(AF_INET, SOCK_STREAM)    s.bind(('', port))    s.listen(1)    while 1:        conn, (remotehost, remoteport) = s.accept()        print 'connected by', remotehost, remoteport        request = ''        while 1:            data = conn.recv(BUFSIZE)            if not data:                break            request = request + data        reply = execute(request)        conn.send(reply)        conn.close() def execute(request):    stdout = sys.stdout    stderr = sys.stderr    sys.stdout = sys.stderr = fakefile = StringIO.StringIO()    try:        try:            exec request in {}, {}        except:            print            traceback.print_exc(100)    finally:        sys.stderr = stderr        sys.stdout = stdout    return fakefile.getvalue() main()