如何使用python发出sudo命令

时间:2016-11-05 23:11:13

标签: python command sudo

我需要发出“sudo service nginx status”来检查服务状态。我有以下内容:

import commands
service output = commands.getoutput("sudo service nginx status")

但我得到“没有tty存在且没有指定askpass程序”

有人理解这个吗?

1 个答案:

答案 0 :(得分:1)

使用commands.getoutput无法提供sudo命令所需的用户输入。 该名称是可自我解释的,您只对命令输出感兴趣。 stdin已关闭。

有几种解决方案:

  1. 关闭正在启动此python脚本的sudo用户的密码验证。 (阅读/ etc / sudoers)

  2. 管道你的密码:(不安全/不好的解决方案,但很容易) "回复YOURPASS | sudo ..."

  3. 签出subprocess.popen,允许您从控制台或文件中提供输入 https://docs.python.org/2/library/subprocess.html#popen-constructor