私は自分の問題の解決策を求めてしばらくの間ネットを検索してきましたが、運がありません。
私の問題は、sudo コマンドを paramiko で実行できないように見えることです。
最初は、単純に SSHClient().exec_command(command) 関数を使用して sudo コマンドを実行しようとしましたが、次のエラーが発生しました。
sudo: sorry, you must have a tty to run sudo
次に、この投稿のアドバイスに従って: How to make a sudo command using 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.
もう 1 つは、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
補足として、Amazon Web Services EC2 インスタンスでこれらの sudo コマンドを実行しようとしていますが、このコードを実行するたびに新しい実例...
また、paramiko 1.7.6 を使用しています。