我在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
此外,在长时间休息后运行脚本时,这种情况会更频繁发生。当我背靠背运行它进行调试时很少会失败。
有关为什么会出现这种情况的任何想法?如果我能提供更多信息,请告诉我。