【发布时间】:2011-08-12 17:21:48
【问题描述】:
我已经在网上搜索了一段时间来解决我的问题,但没有运气。
我的问题是我似乎无法让 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.
另一个,我不得不说,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 命令,所以我很困惑为什么会收到 Connection Refused 错误,因为每次运行此代码时它都会打开一个全新的实例...
另外,我使用的是 paramiko 1.7.6。
【问题讨论】:
标签: python sockets ssh sudo paramiko