我必须使用python中的sudo
打开一个终端。我的密码是pass
,我需要在sudo critical-stack-intel pull
脚本中运行命令。
我有一小段代码:
import subprocess
import shlex
command = "sudo critical-stack-intel pull"
popen = subprocess.Popen(shlex.split(command),stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
popen.communicate("pass")
popen.wait()
# print help(p)
如果我将文件作为python myfile.py
运行,它会要求我在终端内输入密码。这不是我想要的。我希望python处理我给出的密码并正常运行。我该如何完成这项工作?
修改
使用popen.communicate(pass + "\n")
和sudo -S
按照我的意愿行事。
答案 0 :(得分:2)
您可以使用-S
的{{1}}选项通过stdin传递密码。但最有可能的是,使用sudo
允许sudo访问critical-stack-intel
而不使用密码更好。