【发布时间】:2016-03-05 05:19:38
【问题描述】:
我必须使用 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 做了我想要的。
【问题讨论】:
-
sudo打开tty,默认不使用stdin。请改用sudo -S -
我想使用
subprocess.Popen而不是os.Popen。 -
不幸的是,接受的答案不是最佳答案;但问题是重复的,你会在那里找到好的答案。
标签: python python-2.7 subprocess