【问题标题】:Paramiko and sudo帕拉米科和须藤
【发布时间】: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


    【解决方案1】:

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

    只要你可以访问远程主机,你就可以编辑/etc/sudoers并注释掉这一行:Defaults requiretty

    详情在sudoers man page

    要求

    如果设置,sudo 只会在 用户登录到一个真实的 tty。这 将禁止诸如“rsh”之类的东西 somehost sudo ls",因为 rsh(1) 确实 不分配 tty。因为它不是 有可能关闭回声 不存在 tty,某些站点可能带有 设置此标志以防止用户 从输入可见密码。这 flag 默认是关闭的。

    【讨论】:

    • 你好 J.J.,我和 kand 有同样的问题。如果我理解这一点,那么删除 requiretty 标志应该可以解决问题。但是,我仍然得到与上面相同的堆栈跟踪。我究竟做错了什么? (抱歉,如果这是错误的地方问)
    • 是的,同样的问题。这并没有真正解决我的问题,最终默认情况下该行甚至不在 /etc/sudoers 文件中。
    【解决方案2】:
    stdin, stdout, stderr = client.exec_command(cmd,  get_pty=True)
    

    【讨论】:

    • 考虑添加代码描述。它将帮助访问此帖子的未来用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2011-10-28
    相关资源
    最近更新 更多