diff options
author | Guido van Rossum <guido@python.org> | 1995-04-10 11:46:03 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-04-10 11:46:03 (GMT) |
commit | 4e620374b8912342c0baf7391099c703cf55c0a7 (patch) | |
tree | 2df74038ac65981245670484edfcea53a26ffd17 /Demo/sockets | |
parent | 3beff4164bad5a99ea0494d992b9f632afd49cdc (diff) | |
download | cpython-4e620374b8912342c0baf7391099c703cf55c0a7.zip cpython-4e620374b8912342c0baf7391099c703cf55c0a7.tar.gz cpython-4e620374b8912342c0baf7391099c703cf55c0a7.tar.bz2 |
added rpython
Diffstat (limited to 'Demo/sockets')
-rwxr-xr-x | Demo/sockets/rpython.py | 35 | ||||
-rwxr-xr-x | Demo/sockets/rpythond.py | 52 |
2 files changed, 87 insertions, 0 deletions
diff --git a/Demo/sockets/rpython.py b/Demo/sockets/rpython.py new file mode 100755 index 0000000..9548301 --- /dev/null +++ b/Demo/sockets/rpython.py @@ -0,0 +1,35 @@ +#! /usr/local/bin/python + +# Remote python client. +# Execute Python commands remotely and send output back. + +import sys +import string +from socket import * + +PORT = 4127 +BUFSIZE = 1024 + +def main(): + if len(sys.argv) < 3: + print "usage: rpython host command" + sys.exit(2) + host = sys.argv[1] + port = PORT + i = string.find(host, ':') + if i >= 0: + port = string.atoi(port[i+1:]) + host = host[:i] + command = string.join(sys.argv[2:]) + s = socket(AF_INET, SOCK_STREAM) + s.connect((host, port)) + s.send(command) + s.shutdown(1) + reply = '' + while 1: + data = s.recv(BUFSIZE) + if not data: break + reply = reply + data + print reply, + +main() diff --git a/Demo/sockets/rpythond.py b/Demo/sockets/rpythond.py new file mode 100755 index 0000000..f67570b --- /dev/null +++ b/Demo/sockets/rpythond.py @@ -0,0 +1,52 @@ +#! /usr/local/bin/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 sys +from socket import * +import StringIO +import traceback + +PORT = 4127 +BUFSIZE = 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() |