【发布时间】:2015-02-11 05:33:28
【问题描述】:
下面是我的 Python 代码,它运行良好,直到我尝试使用别名获取一些环境变量。从那以后它开始挂在session.recv_exit_status(),现在甚至拒绝执行ls命令。
#!/usr/bin/env/python
import paramiko
trans = paramiko.Transport(('fcd01.force.com',22))
trans.connect(username = 'user',password = 'pwd')
session = trans.open_channel("session")
session.exec_command('ls')
session.recv_exit_status() # ** hangs **
while True:
if session.recv_ready():
break
time.sleep(2)
session.send('exit\n')
stdout_data = []
try:
part = session.recv(4096)
while part:
stdout_data.append(part)
part = session.recv(4096)
except:
raise
print 'exit status: ', session.recv_exit_status()
print ''.join(stdout_data)
任何线索如何取得成功?
【问题讨论】:
-
您是否有理由需要通过字节检索标准输出?另外当它拒绝执行 ls 命令时你得到的错误是什么?
-
代码只是挂在 recv_exit_status() 处,在那里被阻塞了。
-
嗯,我知道的第一件事是,paramiko 存在导入错误,如果要连接的代码不在函数中,则会导致导入死锁。见:*.com/questions/443387/…
-
我的理解是我的 ssh 连接是死锁的,我跟着你的线程运行了以下代码,我仍然卡住:#!/usr/bin/env/python import paramiko if name == "main": ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('fcd01.force.com',username = ' user',password = 'pwd') stdin,stdout,stderr = ssh.exec_command("pwd") print "here" print stdout.readlines() --- 挂在这里 print stderr.readlines() ssh.close()
标签: python python-2.7 python-3.x paramiko