kan*_*and 5 python sockets ssh sudo paramiko
我一直在寻找网络一段时间来解决我的问题,没有运气.
我的问题是我似乎无法使用suram命令与paramiko一起运行.
起初,我试图简单地使用SSHClient().exec_command(command)函数来执行sudo命令,但是这个错误:
sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)
然后,按照这篇文章的建议:如何使用Paramiko制作sudo命令,我试过这个:
#self._ssh is the SSHClient object
self._ssh.invoke_shell().exec_command(command)
Run Code Online (Sandbox Code Playgroud)
但是,大部分时间,这只是给了我:
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.
Run Code Online (Sandbox Code Playgroud)
另外,我不得不说,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
Run Code Online (Sandbox Code Playgroud)
作为旁注,我正在尝试在Amazon Web Services EC2实例上运行这些sudo命令,所以我很困惑为什么我会得到Connection Refused错误,因为每次运行此代码时它都是一个全新的例如...
另外,我正在使用paramiko 1.7.6.
这是最近发行版中的一个常见问题,其影响不仅仅限于 paramiko。(前几天我把一个盒子从 fedora2 升级到最新版本时遇到了这个问题。几个 ssh/sudo 管理脚本坏了)
只要您有权访问远程主机,您就可以编辑/etc/sudoers并注释掉该行:Defaults requiretty
sudoers 手册页中的详细信息:
要求
如果设置,sudo 将仅在用户登录到真实 tty 时运行。这将不允许诸如“rsh somehost sudo ls”之类的内容,因为 rsh(1) 不分配 tty。由于在没有 tty 的情况下无法关闭回显,因此某些站点可能会设置此标志以防止用户输入可见的密码。默认情况下此标志处于关闭状态。
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |