首页 > 解决方案 > paramiko recv() 返回多个命令回显

问题描述

我正在尝试与 WIN10 机器(安装了 OpenSSH)交谈。在大多数情况下,它可以工作,但是当我发送命令(通过发送)并使用读取通道(通过 recv)时,我返回的数据对我发送的命令有一些奇怪的回声。似乎通道具有完整的命令,然后它逐字节地进入服务器。所有这些阶段都记录在recv中。下面是一个示例代码

PS:如果我与 Linux 机器交谈,则看不到问题

isession = paramiko.SSHClient()
isession.set_missing_host_key_policy(paramiko.AutoAddPolicy())
isession.connect(ip, username=user, password=pwd)
ishell = isession.invoke_shell()
ishell.send("set prompt=ICUSTOMPROMP$G" + "\n")
aa = ishell.recv(65535).encode("utf-8")
strip_ansi = re.compile(r'\x1B[@-_][0-?]*[ -/]*[@-~]')
bb = strip_ansi.sub('', aa)

OP(即 bb)是

Microsoft Windows [Version 10.0.17134.858]                                      
\n(c) 2018 Microsoft Corporation. All rights reserved.                            
\n\nuser@YYYY C:\\Users\\XXX>                                                    
set prompt=ICUSTOMPROMP$G                           et 
prompt=ICUSTOMPROMP$G                           t prompt=ICUSTOMPROMP$G                            
prompt=ICUSTOMPROMP$G                           prompt=ICUSTOMPROMP$G                           
rompt=ICUSTOMPROMP$G                           ompt=ICUSTOMPROMP$G                           
mpt=ICUSTOMPROMP$G                           pt=ICUSTOMPROMP$G                           
t=ICUSTOMPROMP$G                           =ICUSTOMPROMP$G                           
ICUSTOMPROMP$G                           CUSTOMPROMP$G                           
USTOMPROMP$G                           STOMPROMP$G                           
TOMPROMP$G                           OMPROMP$G                           
MPROMP$G                           PROMP$G                           
ROMP$G                           OMP$G                           MP$G                           
P$G                           $G                           G                           
\n\nICUSTOMPROMP> 

预期的操作应该是我的命令应该只打印一次。

我能做些什么来解决这个问题吗?或者这是win10 open ssh的一些问题?有没有人尝试通过 paramiko 向 WIN10 发送命令

标签: pythonwindowsparamikoopenssh

解决方案


推荐阅读