paramiko recv()返回命令的多个回声

2024-05-12 13:51:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试与WIN10机器(安装了OpenSSH)对话。在大多数情况下,它都能工作,但当我发送命令(通过send)并使用read channel(通过recv)时,返回的数据对我发送的命令有一些奇怪的回声。似乎channel有完整的命令,然后它一个字节一个字节地转到服务器。所有这些阶段都记录在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发送命令吗


Tags: 命令机器sendparamiko字节channel对话prompt