我试图创建一个python脚本使用他们推荐的步骤编译github上表面内核。 https://github.com/dmhacker/arch-linux-surface
到目前为止,我卡在两节。
每编译必须使用sudo来运行setup.sh的说明。
我在密码使用调用进程之前试过送
preproc = subprocess.Popen(password, shell=True, stdout=subprocess.PIPE)
process = subprocess.Popen(["sudo", 'sh setup.sh'], shell=True, stdin=preproc.stdout, encoding='utf8')
我已经试过sudo -S
这似乎并没有在所有的工作。我也试着小写-s
。
我试图改变subprocess.Popen
到subprocess.call
password = getpass.getpass()
process = subprocess.Popen(["sudo", 'sh setup.sh'], shell=True,
stdin=subprocess.PIPE, encoding='utf8')
print(process.communicate(password + "\n"))
process.wait()
我预计壳在sudo的水平上运行,但它不是。
我不完全肯定的区别是什么,因为我已经因为经过了许多反复,但最终得到它的工作和简化。希望这可以帮助别人的未来。
import getpass
from subprocess import Popen, PIPE
password = getpass.getpass()
command = "./setup.sh"
process = Popen(['sudo', '-S', command], stdout=PIPE, encoding='utf8')
process.communicate(password)