我正试图从python脚本执行sudo:
import os
command = 'id'
os.popen("sudo -S %s"%(command), 'w').write('password')
出于安全原因,我的服务器被配置为不允许非TTY shell执行sudo,有没有解决方法可以使用python(不使用su(执行sudo命令。
上述代码输出:
sudo: sorry, you must have a tty to run sudo
基于此:https://stackoverflow.com/a/21444480/1216776你应该能够做到:
import os
import pty
command = 'id'
scmd ="sudo -S %s"%(command)
def reader(fd):
return os.read(fd)
def writer(fd):
yield 'password'
yield ''
pty.spawn(scmd, reader, writer)