下面是我的Python代码运行良好,直到我试图用别名来源的一些环境变量。从此它开始挂在session.recv_exit_status()
,现在甚至拒绝执行ls
命令。Paramiko SSH执行命令被卡在session.recv_exit_status()
#!/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命令时,你得到的错误是什么? – 2015-02-11 05:53:21
代码简单地挂在recv_exit_status(),它在那里被阻塞。 – user3565150 2015-02-11 06:02:00
那么我知道的第一件事是,有一个paramiko导入错误,如果连接的代码不在函数中,它会导致导入死锁。请参阅:http://stackoverflow.com/questions/443387/why-does-paramiko-hang-if-you-use-it-while-loading-a-module/450895#450895 – 2015-02-11 06:06:28