【问题标题】:Executing sudo using pty.spawn()使用 pty.spawn() 执行 sudo
【发布时间】:2020-04-12 20:30:11
【问题描述】:

我正在尝试使用python 2.7 中的pty.spawn()TTY shell 中执行sudo -S id

import os
import pty
command = 'id'

scmd ="sudo -S %s"%(command)

def reader(fd):
  return os.read(fd, 50)

def writer(fd):
    yield 'password'
    yield ''

pty.spawn(scmd, reader, writer)

当我执行上述代码时,python 解释器会输出以下错误:

OSError: [Errno 13] Permission denied

我的代码基于这个答案: Issuing commands to psuedo shells (pty)

即使密码正确,我也会收到上述错误,如何修复此代码以使其执行sudo 并将id 命令的输出打印到标准输出?

【问题讨论】:

    标签: python linux sudo tty


    【解决方案1】:

    您似乎需要将命令作为数组提供,并且使用生成器编写器似乎不起作用,并且您需要在密码中换行,所以尝试:

    def writer(fd):
        return 'password\n'
    
    os.close(0)
    pty.spawn(scmd.split(' '), reader, writer)
    

    使用os.close(0) 会阻止程序将标准输入置于原始模式。

    【讨论】:

    • 收到此错误: 更改为 user=(root) 的密码不正确。抱歉,再试一次
    • 我对此无能为力。请注意,sudo 要求您输入密码,而不是 root 的密码。
    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2021-05-27
    • 2012-01-02
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多