我一直在寻找网络一段时间现在解决我的问题,没有运气。帕拉米科和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