認証のためにダイアログを呼び出すにはどうすればよいですか?


13

私はPythonでwxモジュールを使用してguiプログラムを書いています。プログラムでは、ルート権限が必要なフォルダにアクセスするたびに、ターミナルでパスワードを要求しますが、パスワードを入力して認証するためのダイアログをユーザーに表示したいです。そのダイアログを呼び出してubuntuでユーザーを認証する方法は?


「端末でパスワードを要求する」と書いているのは、Pythonからsudo端末コマンドを呼び出しているということですか?
TLE

私はあなたがおそらくではなくPolicyKitを使うべきだと思いますsudoが、私はPythonまたはPolicyKitの知識がなく、その方法を説明する良い答えを書くことができません。おそらく他の誰かができます。
エリアケイガン

これをどのように使用しますか?コマンドを実行するだけ
デイジー

回答:


9

stackoverflowには、質問に答える2つの異なるQ&Aがあります:herehereです。

どちらの答えもコマンドを使用していますgksudo(@khamerが既に言及しています)。gksudo command(Pythonなしでも)実行すると、基本的には何をsudoしますが、グラフィカルインターフェイスを使用します。つまり、ユーザーにパスワードを要求し、ユーザーがsudoersファイルにいる場合はrootとしてコマンドを実行します。

pythonでリンクされた回答から提案されたソリューションを実装するには、次の例に示すようなものを使用できます。

ファイルを作成しますrun.py

#!/usr/bin/python

import subprocess
subprocess.call(['gksudo','python create.py'])

そしてファイルcreate.py

#!/usr/bin/python

# Create test file..
f = file("mytestfile", "w")

次に実行python run.pyし、パスワードを入力すると、rootが所有するファイルが作成されます。実行するpython create.py場合は、所有者になります(スクリプトを実行する前にファイルが存在してはなりません)。


3

より洗練されたPythonソリューションがあると確信していますが、ダウンして汚いバージョンはgksudoを使用することです。gksudoはsudoと同じことを行いますが、コマンドラインで尋ねる代わりに、指定した認証用のダイアログを作成します。

https://help.ubuntu.com/community/RootSudo#Graphical_sudoを参照してください


これはPythonでのUbuntuのプログラミングに関する質問なので、Pythonプログラムでgksu/ を使用する方法を示すコード例を教えてgksudoください。
エリアケイガン

@EliahKagan私はあなたの要求を満たすことを望んでいる例を使って答えを書きました!:)
lumbric

0

このスクリプトをコードに挿入します。

import os

Password = raw_input('Please enter your root password!')

sudo_command = '<your command>'

execute = os.system('echo %s|sudo -S %s' % (Password, sudo_command))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.