使用 pty.spawn() 执行 sudo
Executing sudo using pty.spawn()
我正在尝试在 TTY
shell 中使用 pty.spawn()
在 python 2.7
中执行 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
命令的输出打印到标准输出?
您似乎需要以数组形式提供命令,并且使用生成器编写器似乎不起作用,并且您需要在密码中换行,所以尝试:
def writer(fd):
return 'password\n'
os.close(0)
pty.spawn(scmd.split(' '), reader, writer)
使用 os.close(0)
阻止程序将标准输入设置为原始模式。
我正在尝试在 TTY
shell 中使用 pty.spawn()
在 python 2.7
中执行 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
命令的输出打印到标准输出?
您似乎需要以数组形式提供命令,并且使用生成器编写器似乎不起作用,并且您需要在密码中换行,所以尝试:
def writer(fd):
return 'password\n'
os.close(0)
pty.spawn(scmd.split(' '), reader, writer)
使用 os.close(0)
阻止程序将标准输入设置为原始模式。