Тайм-аут в pxssh не работает, когда su другому пользователю - PullRequest
0 голосов
/ 08 ноября 2018
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, он становится постоянным временем ожидания. Не знаю почему и как это решить, может кто-нибудь сделать мне одолжение?

...