我正在尝试通过Python脚本安装Debian软件包文件。所以我使用了下面的脚本。
import os
os.system('echo %(passwd)s | sudo dpkg -i 34.deb' %locals())
运行Python脚本后,没有安装软件包。它显示了以下消息。{ {2}}当我尝试通过terminall安装软件包时,它已经正确安装。我在终端中输入的命令如下。sudo: no tty present and no askpass program specified如果您知道,请允许我。
答案 0 :(得分:1)
似乎,因此请遵循文档sudo
不接受管道密码
通常,如果sudo需要密码,它将从用户的终端读取它。如果指定了-A(askpass)选项,则执行(可能是图形化的)帮助程序以读取用户的密码并将密码输出到标准输出。如果设置了SUDO_ASKPASS环境变量,则它指定辅助程序的路径。 否则,如果/etc/sudo.conf包含指定askpass程序的行,则将使用该值。例如:
# Path to askpass helper program Path askpass /usr/X11R6/bin/ssh-askpass
如果没有可用的askpass程序,sudo将退出并显示错误。
你应该使用-A
标志传递一个askpass程序。
编辑:似乎sudo
接受来自stdin
的密码,请使用-S
标记。
答案 1 :(得分:1)
python也有子进程模块
import subprocess as sp
sp.call(["sudo","dpkg","-i", "some.deb"])
必须工作
您可以添加每个参数