我正在使用python paramiko库来SSH进入一个FTP服务器。我能够使用命令行访问服务器,并使用sftp命令检索文件列表,但是paramiko似乎做了一些事情,使我无法检索输出。这是我的python代码。
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('###########',
port=##,
username='####',
password='####',
key_filename='#####')
stdin, stdout, stderr = client.exec_command('ls')
这一切都能正常工作 然而下一行
stdout.readline()
只是坐在那里挂着。注意,每 这条 我甚至没有试图检索完整的输出,只是第一行。
我还尝试了
stdin.close()
print(stdout.readlines())
返回一个空字符串。这说明服务器可能在等待输入,但当我使用命令行时,我只需发送ls命令就能得到输出,那么它在等待什么命令呢?
版本。
你的readline可能在远程主机返回之前就已经执行了。
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('###########',
port=##,
username='####',
password='####',
key_filename='#####')
stdin, stdout, stderr = client.exec_command('ls')
stdout.channel.recv_exit_status()
print(stdout.readline())
recv_exit_status()会等到远程主机上的exec_command()返回后再执行.