su给另一个用户时,pxssh中的超时不起作用

时间:2018-11-08 01:44:27

标签: python pxssh

def run_cmd_on_server(self, ip, user, passwd, timeout, need_root=False, *args):
    run('rm /home/user/.ssh/known_hosts')
    run('touch /home/user/.ssh/known_hosts')
    try:
        ssh = pxssh.pxssh()
        if need_root is True:
            ssh.login(ip, user, passwd, login_timeout)
            self.sendline_with_expect(ssh, 'su - root', 'password', root_password)         ----su to root
        else:
            ssh.login(ip, user, passwd, login_timeout=60)
        for value in args:
            self.sendline_with_expect(ssh, value)       ----execute commands
        ssh.prompt(timeout)
        result = ssh.before
        return result
    except pxssh.ExceptionPxssh, e:
        print str(e)
        return "False"
    finally:
        ssh.close()

self.sendline_with_expect(ssh, value)是包含ssh.sendline()ssh.expect()的包装方法。

不允许直接以root用户身份登录,因此我必须以普通用户身份登录,然后以su身份登录到root用户。

ssh.prompt(timeout)中的超时在以普通用户身份登录时可以正常运行,但是当su到root用户时,它将变为恒定的等待时间。我不知道为什么以及如何解决它,有人可以帮我一个忙吗?

0 个答案:

没有答案