【发布时间】:2017-03-19 13:27:37
【问题描述】:
我需要发出“sudo service nginx status”来检查服务状态。我有以下内容:
import commands
service output = commands.getoutput("sudo service nginx status")
但我得到“没有 tty 存在并且没有指定 askpass 程序”
有人明白吗?
【问题讨论】:
我需要发出“sudo service nginx status”来检查服务状态。我有以下内容:
import commands
service output = commands.getoutput("sudo service nginx status")
但我得到“没有 tty 存在并且没有指定 askpass 程序”
有人明白吗?
【问题讨论】:
使用commands.getoutput 使得无法提供 sudo 命令所需的用户输入。
这个名字是自解释的,你只对命令输出感兴趣。 stdin 已关闭。
有几种解决方案:
关闭启动此 python 脚本的 sudo 用户的密码验证。 (阅读 /etc/sudoers)
输入您的密码:(不安全/错误的解决方案,但很简单) “回显 YOURPASS | sudo ...”
签出subprocess.popen 允许您从控制台或文件提供输入
https://docs.python.org/2/library/subprocess.html#popen-constructor
【讨论】: