gpt4 book ai didi

python - Paramiko 和 sudo

转载 作者:太空狗 更新时间:2023-10-30 01:24:09 37 4
gpt4 key购买 nike

我已经在网上搜索了一段时间以寻找解决我的问题的方法,但没有成功。

我的问题是我似乎无法让 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 命令,所以我很困惑为什么我会收到连接被拒绝的错误,因为每次我运行这段代码时它都会打开一个全新的实例...

此外,我正在使用 paramiko 1.7.6。

最佳答案

这是最近发行版中的一个常见问题,其影响不仅仅是 paramiko。 (前几天我把一个盒子从 fedora2 升级到最新的时候遇到了这个问题。几个 ssh/sudo 管理脚本坏了)

只要您有权访问远程主机,就可以编辑 /etc/sudoers 并注释掉以下行:Defaults requiretty

详细信息在 sudoers man page :

requiretty

If set, sudo will only run when the user is logged in to a real tty. This will disallow things like "rsh somehost sudo ls" since rsh(1) does not allocate a tty. Because it is not possible to turn off echo when there is no tty present, some sites may with to set this flag to prevent a user from entering a visible password. This flag is off by default.

关于python - Paramiko 和 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5785353/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com