所以我和paramiko一起进行了一些基本的SSH测试,但没有任何输出到stdout。这是我的密码。
import paramiko
client=paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
com="ls ~/desktop"
client.connect('MyIPAddress',MyPortNumber, username='username', password='password')
output=""
stdin, stdout, stderr = client.exec_command(com)
print "ssh succuessful. Closing connection"
client.close()
print "Connection closed"
stdout=stdout.readlines()
print stdout
print com
for line in stdout:
output=output+line
if output!="":
print output
else:
print "There was no output for this command"
所以每当我运行这个命令时,就会执行这个命令(如我执行cp之类的操作时所看到的,文件会被复制),但我总是得到“这个命令没有输出”。当打印stdout=stdout.readlines()时,[]是输出。此外,如果我在for循环中添加print语句,它将永远不会运行。有人能帮我吗?谢谢!
您已在读取行之前关闭连接:
*交互式示例: ===第1部分,这显示服务器中的sh输出,在结尾处是“>;” 需要一些输入才能继续或退出
selilsosx045:uecontrol-CXC_173_6456-R32A01 lteue$/uecontrol.sh-主机本地主机 UE控件:使用以下命令启动UE控件: UE控件:java-Dlogdir=-Duecontrol.configdir=./etc-jar./server/server-R32A01.jar-host本地主机 从文件/Users/lteue/Downloads/uecontrol-CXC_173_6456-R32A01/etc/uecontrol.properties加载属性 向主机localhost启动远程CLI 输入命令Q退出CLI或命令帮助 获取有关可用命令的信息。 CLI已准备好输入。 uec>;
===带peramiko的Pyhton代码===*
尝试以下方法:而不是stdout.channel.exit_status_ready():
相关问题 更多 >
编程相关推荐