mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
added rpython
This commit is contained in:
parent
3beff4164b
commit
4e620374b8
2 changed files with 87 additions and 0 deletions
35
Demo/sockets/rpython.py
Executable file
35
Demo/sockets/rpython.py
Executable file
|
@ -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()
|
52
Demo/sockets/rpythond.py
Executable file
52
Demo/sockets/rpythond.py
Executable file
|
@ -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()
|
Loading…
Add table
Add a link
Reference in a new issue