使用pxssh无法增加超时值

时间:2016-12-23 14:03:34

标签: python

我正在尝试通过ssh会话运行命令。 这个命令需要1个多小时。完成(安装几个文件集)。 现在我的脚本能够启动命令,但是,它在几分钟后失败,发生以下错误信息。

文件" ./ return.py",第32行,在CHECKFILESTATUS中     s.logout()   文件" /usr/lib/python2.7/site-packages/pexpect-4.2.0-py2.7.egg/pexpect/pxssh.py" ;,第350行,注销     index = self.expect([EOF,"(?i)有停止的工作"])   文件" /usr/lib/python2.7/site-packages/pexpect-4.2.0-py2.7.egg/pexpect/spawnbase.py" ;,第321行,期待     超时,searchwindowsize,async)   文件" /usr/lib/python2.7/site-packages/pexpect-4.2.0-py2.7.egg/pexpect/spawnbase.py",第345行,在expect_list中     return exp.expect_loop(timeout)   文件" /usr/lib/python2.7/site-packages/pexpect-4.2.0-py2.7.egg/pexpect/expect.py",第107行,在expect_loop中     返回self.timeout(e)   文件" /usr/lib/python2.7/site-packages/pexpect-4.2.0-py2.7.egg/pexpect/expect.py" ;,第70行,超时     提高TIMEOUT(msg) pexpect.exceptions.TIMEOUT:超出超时。 命令:/ bin / ssh args:[' / bin / ssh',' -q',' -l',' xxxx',' sys&# 39] 缓冲区(最后100个字符):' eement accepted。您可以在/ ITM / LAP /许可证目录中查看许可证文件详细信息\ r \ n' 之前(最后100个字符):' eement接受。您可以在/ ITM / LAP /许可证目录中查看许可证文件详细信息\ r \ n' 后: 匹配:无 match_index:无 exitstatus:无 flag_eof:错误 pid:4289 child_fd:5 关闭:错误 超时:30 分隔符: logfile:无 logfile_read:无 logfile_send:无 maxread:2000 ignorecase:假 searchwindowsize:无 delaybeforesend:0.05 delayafterclose:0.1 delayafterterminate:0.1 搜索者:searcher_re:     0:EOF     1:re.compile("(?i)有停止的工作")。

enter code here
#!/bin/python
import pexpect
import netrc
from pexpect import pxssh,TIMEOUT

LPAR = 'VI'
secrets = netrc.netrc()
ID, MC, PD = secrets.authenticators( LPAR )
hostname = raw_input('hostname: ')

def CHECKFILESTATUS(command):
global hostname
global ID
global PD

    try:
        s = pxssh.pxssh()
        hostname = hostname
        username = ID
        password = PD
        s.login(hostname, username, password)
        s.sendline(command)
        s.prompt()
        print s.before
        s.logout()
    except pxssh.ExceptionPxssh, e:
        print("pxssh failed on login.")
        print(e)


def main():
CHECKFILESTATUS('updateios -dev /mnt/V -install -accept')


if __name__ == '__main__':
 main()

有任何解决这个超时问题的建议吗?

1 个答案:

答案 0 :(得分:1)

我认为

s = pxssh.pxssh(timeout=7200)

应该做的伎俩

查看源代码,pxssh构造函数将timeout作为关键字参数并设置超时(我猜是以秒为单位)。

  

def init (self,timeout = 30,maxread = 2000,searchwindowsize = None,                       logfile = None,cwd = None,env = None,ignore_sighup = True,echo = True,                       options = {},encoding = None,codec_errors ='strict'):