我正在尝试使用带有cmd模块的python和通过套接字进行通信来构建类似shell的接口。目前我使用telnet作为客户端与...进行交互。
一切都按预期工作,但是readline / completion功能(光标键图或Tab出现在屏幕上) 当相同的代码没有通过套接字,并使用默认的stdin / stdout工作正常。
以下是代码部分:
from cmd import Cmd
import socket
# Cmd shell
class my_shell (Cmd):
"""Simple shell"""
def __init__(self, SockFile):
Cmd.__init__(self, stdin=SockFile, stdout=SockFile)
sys.stdout = SockFile
self.use_rawinput = False
def do_bye(self, line):
return True
def do_EOF(self, line):
return True
def my_worker(Conn):
try:
sockFile = Conn.makefile()
shell = my_shell ( sockFile )
shell.cmdloop()
except:
pass
finally:
Conn.close()
有什么想法吗?