我需要发出“sudo service nginx status”来检查服务状态。我有以下内容:
import commands
service output = commands.getoutput("sudo service nginx status")
但我得到“没有tty存在且没有指定askpass程序”
有人理解这个吗?
答案 0 :(得分:1)
使用commands.getoutput
无法提供sudo命令所需的用户输入。
该名称是可自我解释的,您只对命令输出感兴趣。 stdin
已关闭。
有几种解决方案:
关闭正在启动此python脚本的sudo用户的密码验证。 (阅读/ etc / sudoers)
管道你的密码:(不安全/不好的解决方案,但很容易) "回复YOURPASS | sudo ..."
签出subprocess.popen
,允许您从控制台或文件中提供输入
https://docs.python.org/2/library/subprocess.html#popen-constructor