2012-01-18 10 views
3

私はPythonでプロセスのスクリプトを作成しています。私のコードでは、p = subprocess.Popen(['example', 'command', 'and', 'args')を使用していくつかのコマンドライン呼び出しを行います。私は最近、コマンドラインのいくつかの呼び出しがsudo権限を必要とするという問題に遭遇しました。そのため、ユーザーはsudoパスワードを何度も入力する必要がありましたが、これは望ましくありません。 1つのシェルインスタンスのみを生成し、それをプログラム全体で繰り返し使用する方法はありますか?異なるコマンドが異なるクラスから実行されても、これを実行できますか? ありがとう!pythonで1つのサブプロセスを繰り返し使用しています

+0

まだPolicyKitに会ったことがありますか? –

+0

これはparamikoライブラリを使用して行うことができます。 –

+0

提案していただきありがとうございます。外部ライブラリを使用せずにこれを行う方法はありますか?私は、私が必要なことをすることを可能にするPopen構成が存在することを望んでいました。 – EagerToLearn

答えて

0

具体性のために、あなたのプログラムは、このように見えたとします通常のユーザーとして実行

import subprocess 
import shlex 
proc = subprocess.Popen(shlex.split('fdisk -l')) 
proc.communicate() 
proc = subprocess.Popen(shlex.split('fdisk -l')) 
proc.communicate() 

は出力を返しません。

しかし、あなたは

% sudo python /path/to/test.py 

を実行した場合、あなたは、rootのパスワードを一度入力を求め、そして両方subprocess.Popenコマンドはrootとして実行されています。

+0

私はそれを逃した。それはトリック、ありがとう! – EagerToLearn

関連する問題