gpt4 book ai didi

python - Paramiko 跳过 channel 接收上的一些数据

转载 作者:行者123 更新时间:2023-12-01 05:43:25 29 4
gpt4 key购买 nike

我尝试执行一个命令来嗅探串行端口并在标准输出上打印。该命令连续运行,不会退出或停止。当我使用putty SSH控制台时,我可以看到控制台上不断更新的数据。

我能够发送命令并开始跟踪。当我尝试使用 Paramiko channel 读取输出数据时,使用 recv 函数读取。我观察到它没有捕获嗅探器发出的所有数据。

我在检查 recv_ready 状态后执行 recv 操作。

下面是代码。如何避免丢失数据?

ssh= paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.connect('host.example.com')
channel = ssh.get_transport().open_session()
channel.get_pty()

channel.exec_command("sniff /dev/stty2")

while(True):
if(channel.recv_ready): # Doesnt get triggered often
print channel.recv(2048) # Reads only a part of the data

最佳答案

我也遇到同样的问题,我找到了解决办法
也许不是一个伟大的,但它对我有用
这是一段代码,希望有帮助:)

while True:
if channel.recv_ready():
break
time.sleep(2)
channel.send('exit\n')

stdout_data = []
try:
part = channel.recv(4096)
while part:
stdout_data.append(part)
part = channel.recv(nbytes)
except:
raise

print 'exit status: ', channel.recv_exit_status()
print ''.join(stdout_data)

关于python - Paramiko 跳过 channel 接收上的一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16871668/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com