如何连续读取 long 运行 ssh 命令的输出而不阻塞使用 paramiko
How to read the output of long running ssh command continuously without blocking using paramiko
我正在尝试连续读取长运行 ssh 命令的输出。我知道 exec_command
是非阻塞的。但是一旦我使用 stdout.readlines()
它就会变得阻塞。我不想等待 10 分钟让我的 ssh 命令完成读取所有输出行。我想在 ssh 命令写入 stdout 后立即获得输出。有办法吗?
import paramiko
#import select
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
#transport = ssh.get_transport()
#channel = transport.open_session()
stdin,stdout,stderr = ssh.exec_command(command)
print stdout.readlines()
import paramiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
stdin,stdout,stderr = ssh.exec_command(command)
for line in iter(lambda: stdout.readline(2048), ""):
print(line)
以上代码有帮助。我从中得到了这个答案建议
我正在尝试连续读取长运行 ssh 命令的输出。我知道 exec_command
是非阻塞的。但是一旦我使用 stdout.readlines()
它就会变得阻塞。我不想等待 10 分钟让我的 ssh 命令完成读取所有输出行。我想在 ssh 命令写入 stdout 后立即获得输出。有办法吗?
import paramiko
#import select
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
#transport = ssh.get_transport()
#channel = transport.open_session()
stdin,stdout,stderr = ssh.exec_command(command)
print stdout.readlines()
import paramiko
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,username=username,password=password)
stdin,stdout,stderr = ssh.exec_command(command)
for line in iter(lambda: stdout.readline(2048), ""):
print(line)
以上代码有帮助。我从中得到了这个答案建议