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