我想使用预定义的针对嵌入式系统的自定义命令(无需触摸用户外壳等)来实现SSH服务器(使用paramiko)。我希望接收用户发送到服务器的整个字符串(例如在Telnet中),但是我需要将每个字符解析为整个字符串。
我想这与TCP流有关,但是我不知道如何重构代码以接收客户端发送的完整消息。 当我希望实现退格键的用法时,下面的代码会遇到一些问题。 同样,在发送每个命令之后,我想向客户端发送字符串“ $>”,以便他知道他可以编写另一个命令。
该如何解决?获得完整消息的唯一方法是读取那些单个字符,直到\r
吗?
def handlemsg(chan):
cmd = ""
while True:
r = chan.recv(512)
chan.send(r) # echo back to client
rdata = r.decode('utf-8') # decode from byte to str
if rdata == '\r': # client sends EOF
chan.send('\n$>')
break
cmd += rdata
return cmd # returns command from client