Python paramiko ssh channel send()偶尔不起作用

时间:2016-02-12 22:20:53

标签: python ssh paramiko

我在Windows 7上使用paramiko版本1.12.0运行python 2.6.6(64位)。

我有一个在远程unix机器上运行可执行文件的脚本。该脚本大部分时间都在工作(50-70%),但偶尔也不起作用。这是我的脚本的简化版本。

import paramiko
import logging
logger = paramiko.util.logging.getLogger()
logger.setLevel(logging.DEBUG)
paramiko.util.log_to_file("filename.log")

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, 22, username, password)

chan = ssh.invoke_shell()

chan.send("cd /home/usr/exe_loc\n")
buff = _read_buffer(chan)
print(buff)

send_code = chan.send("nohup exe_name -r1234 &\n")

print("exec exit code = %d"%send_code)

_read_buffer打印缓冲区并按预期工作。

即使脚本无法运行可执行文件,缓冲区仍然会打印'cd'命令,而send_code是> 0表示命令已成功发送(?)。

我比较了成功运行生成的'filename.log'文件,运行失败。唯一的区别是失败的运行在文件末尾有一个额外的行(下面)。

DEB [20160212-16:04:31.512] thr=1   paramiko.transport: EOF in transport thread

此外,在长时间休息后运行脚本时,这种情况会更频繁发生。当我背靠背运行它进行调试时很少会失败。

有关为什么会出现这种情况的任何想法?如果我能提供更多信息,请告诉我。

0 个答案:

没有答案