我正在尝试通过 Python 脚本安装 Debian 软件包文件。所以我使用了下面的脚本。
import os
os.system('echo %(passwd)s | sudo dpkg -i 34.deb' %locals())
运行 Python 脚本后,未安装软件包。它显示以下消息。sudo:不存在 tty,也没有指定 askpass 程序但是当我尝试通过终端安装软件包时,它已正确安装。我在终端中给出的命令如下。
sudo dpkg -i 34.deb
如果你知道,请告诉我。
python too have the subprocess Module
import subprocess as sp
sp.call(["sudo","dpkg","-i", "some.deb"])
Must work
you can add each parameter
似乎,因此请遵循文档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
标志。