python paramiko shell命令

时间:2012-03-16 01:52:13

标签: python shell paramiko

我正在使用paramiko在服务器上编译程序。您可能知道编译需要花费大量时间,并且正在从此过程发送大量数据。由于我无法从shell命令获取要执行的命令的退出状态,因此我不得不等待数据发送给我,当它停止发送时,我可以继续执行下一个命令。

由于某些问题,这种做法不可靠:   - 程序仍可在不发送输出的情况下执行   - 如果recv_ready返回false,我必须使用sleep命令才能保持低内存   - 使用睡眠命令是耗时的,因为我不知道在考虑这个过程之前“睡了”多少,所以我可以继续下一个

到目前为止,这是我的实际代码:

for command in commands:
    shell.send( "%s\n" % command )
    waited = 0
    while True:
        if shell.recv_ready():
            x = shell.recv( 1024 )
            if len( x ):
                print x
                shell.settimeout( 1 )
                waited = 0
        else:
            time.sleep( 1 )
            waited += 1
            if waited > 10:
                break

这对大多数情况都很好但是如果运行任务持续时间超过10秒,我的程序会转到下一个命令,因为他认为已经完成了。如果我将超时阈值增加到20秒,那么在执行每个命令之间会丢失20秒,考虑到大多数命令执行时间不到1-2秒这一事实,浪费了大量时间。

你们怎么建议我应该这样做?

0 个答案:

没有答案