Paramiko SSH服务器-从客户端获取完整消息

时间:2019-07-15 20:00:02

标签: python paramiko

我想使用预定义的针对嵌入式系统的自定义命令(无需触摸用户外壳等)来实现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

0 个答案:

没有答案