Python Paramiko exec_command超时不起作用?

时间:2016-02-15 06:43:58

标签: python timeout paramiko

嘿伙计们我得到了以下ssh命令,

    try:
        print 'trying to restart'
        self.ssh.exec_command(RR_CMD % (self.path_ext, self.rport), timeout=1)
        print 'restarted'
    except:
        self.ssh.close()
        self.ssh = ssh.create_ssh_client(self.ip, self.port, self. username, self.password)
        self.restart()

基本上我试图重启远程perl脚本。 但是有时候,比如让我们说2000年的1 - 我的python程序在exec_command行上冻结有时长达几分钟!

我想使用超时功能,我设置为1秒,但由于某种原因它不起作用......

2 个答案:

答案 0 :(得分:2)

我在exec_command中的超时问题没有得到尊重我的预期。例如,我将超时设置为60,并发现一个挂起的命令整夜运行。我以前做的是

response = client.exec_command(command, timeout=60)
returncode = response[0].channel.recv_exit_status()

但是当超时为None或任何值时,它挂在recv_exit_status上,现在,我只是自己管理超时,因为exec_command是非阻塞的,通过轮询{{ 1}}。

channel.exit_status_ready

答案 1 :(得分:0)

您的public String toString() { String temp = new String(); temp = "Movie title: " + getTitle() + "\nYear of Release: " + getYear(); return(temp); } 版本怎么样?

paramiko支持的参数paramiko的最新版本。

Paramiko Changelog v1.10.0:

  

将超时参数添加到SSHClient.exec_command,以便更轻松地设置命令的内部通道对象的超时。感谢Cernov Vladimir的补丁。