Я уже некоторое время искал в сетях решение моей проблемы, и безуспешно.
Моя проблема в том, что я не могу заставить команды sudo запускаться с paramiko.
Сначала я попытался просто использовать функцию SSHClient (). Exec_command (command) для выполнения команды sudo, но эта ошибка:
sudo: sorry, you must have a tty to run sudo
Затем, следуя совету этого сообщения: Как создать команду sudo с помощью Paramiko, пробовал вот так:
#self._ssh is the SSHClient object
self._ssh.invoke_shell().exec_command(command)
Однако в большинстве случаев это просто дает мне:
File "pipelines/load_instance/ssh_tools.py", line 71, in executeCommand
stdin, stdout, stderr = self._ssh.invoke_shell().exec_command(command)
File "<absolute_path>/paramiko/channel.py", line 213, in exec_command
self._wait_for_event()
File "<absolute_path>/paramiko/channel.py", line 1084, in _wait_for_event
raise e
paramiko.SSHException: Channel closed.
В другом, я бы сказал, в 40% случаев я получаю следующее:
File "<absolute_path>/paramiko/client.py", line 291, in connect
sock.connect(addr)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
В качестве побочного примечания я пытаюсь запустить эти команды sudo на экземпляре Amazon Web Services EC2, поэтому я не понимаю, почему я получаю ошибку Connection Refused, поскольку каждый раз, когда я запускаю этот код, он появляется на новой новой пример...
Еще я использую paramiko 1.7.6.