1

PythonスクリプトでDebianパッケージファイルをインストールしようとしているので、以下のスクリプトを使用しました。

import os
os.system('echo %(passwd)s | sudo dpkg -i 34.deb' %locals())
Python スクリプトを実行した後、パッケージはインストールされませんでした。以下のメッセージが表示されました。
sudo: tty が存在せず、askpass プログラムが指定されていません
しかし、ターミナル経由でパッケージをインストールしようとすると、正しくインストールされました。ターミナルで指定したコマンドは以下のとおりです。
sudo dpkg -i 34.deb
あなたが知っているなら、私にさせてください。

4

2 に答える 2

1

pythonにもサブプロセスモジュールがあります

import subprocess as sp
sp.call(["sudo","dpkg","-i", "some.deb"])

働かなければならない

各パラメータを追加できます

于 2013-02-07T08:16:20.507 に答える
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

于 2013-02-07T08:11:11.243 に答える