Я уже некоторое время искал в сети решение моей проблемы, и мне не повезло.
Моя проблема в том, что я не могу заставить команды sudo работать с paramiko.
Сначала я попытался просто использовать функцию SSHClient (). Exec_command (command) для выполнения команды sudo, но это с ошибками:
sudo: sorry, you must have a tty to run sudo
Затем, следуя совету этогоpost: Как сделать команду 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Например, я не понимаю, почему я получаю ошибку «Отказано в соединении», поскольку каждый раз, когда я запускаю этот код, он появляется на новом новом экземпляре ...
Кроме того, я использую paramiko 1.7.6.