您可以使用code.InteractiveConsole和SocketServer将python交互式shell附加到套接字上,并通过该套件进行开发。一个简单的例子是这样的:
import sys
import SocketServer
from code import InteractiveConsole
class InteractiveServer(SocketServer.BaseRequestHandler):
def handle(self):
file = self.request.makefile()
shell = Shell(file)
try:
shell.interact()
except SystemExit:
pass
class Shell(InteractiveConsole):
def __init__(self, file):
self.file = sys.stdout = file
InteractiveConsole.__init__(self)
return
def write(self, data):
self.file.write(data)
self.file.flush()
def raw_input(self, prompt=""):
self.write(prompt)
return self.file.readline()
if __name__ == '__main__':
HOST, PORT = "0.0.0.0", 9999
server = SocketServer.TCPServer((HOST, PORT), InteractiveServer)
server.serve_forever()
一旦你得到了建立和运行,你可以从另一端连接到端口9999,并做你的事。你可以看到这个工作在this screenshot (PNG)
使用InteractiveConsole的基础知识采取了from this post。我将其修改为与我正在处理的另一个项目的SocketServer一起使用。