diff options
Diffstat (limited to 'Tools/demo/rpython.py')
-rwxr-xr-x | Tools/demo/rpython.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Tools/demo/rpython.py b/Tools/demo/rpython.py new file mode 100755 index 0000000..5e7bc0a --- /dev/null +++ b/Tools/demo/rpython.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +""" +Remote python client. +Execute Python commands remotely and send output back. +""" + +import sys +from socket import socket, AF_INET, SOCK_STREAM, SHUT_WR + +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 = host.find(':') + if i >= 0: + port = int(port[i+1:]) + host = host[:i] + command = ' '.join(sys.argv[2:]) + s = socket(AF_INET, SOCK_STREAM) + s.connect((host, port)) + s.send(command.encode()) + s.shutdown(SHUT_WR) + reply = b'' + while True: + data = s.recv(BUFSIZE) + if not data: + break + reply += data + print(reply.decode(), end=' ') + s.close() + +main() |