您可以使用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一起使用。