我一直在尋找網絡一段時間現在解決我的問題,沒有運氣。帕拉米科和sudo
我的問題是,我似乎無法得到與paramiko運行sudo命令。
起初,我想簡單地使用SSHClient()exec_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.
其他的,我不得不說,時間的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。
你好J.J.,我有和KAND完全一樣的問題。如果我理解這個權利,那麼移除這個requiretty標誌應該可以解決這個問題。不過,我仍然可以得到與上面相同的堆棧跟蹤。我究竟做錯了什麼? (道歉,如果這是錯誤的地方問) – Patrick 2011-07-24 12:26:16
是的,同樣的問題在這裏。這並不能真正解決我的問題,並且最終該行甚至在默認情況下甚至不在/ etc/sudoers文件中。 – lpapp 2013-12-10 09:07:38