Kaydet (Commit) 4e620374 authored tarafından Guido van Rossum's avatar Guido van Rossum

added rpython

üst 3beff416
#! /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()
#! /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()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment