1

現在、次のようなコマンドを使用するファブリック スクリプトがあります。

sudo('pip install virtualenv --upgrade --use-mirrors')

私が知りたいのは、これを実行するために sudo に -E オプションを渡す方法です。

sudo -E pip install virtualenv --upgrade --use-mirrors

編集:

これを試しました:

sudo('pip install virtualenv --upgrade --use-mirrors, -E')

しかし、それは sudo の代わりに pip install にオプションを渡すようです

編集2:

env.sudo_prefix = "sudo -E -S -p '%(sudo_prompt)s'"

TypereError: format requires mapping が表示されます

編集3:

env.sudo_prefix = "sudo -E -S -p '%(sudo_prompt)s'" % env

私に TypreError を与えています: 文字列のフォーマット中にすべての引数が変換されるわけではありません

4

2 に答える 2

1

ファブリック ソース ファイルから。sudo メソッドのシグネチャは次のとおりです。

def sudo(command, shell=True, pty=True, combine_stderr=None, user=None,
    quiet=False, warn_only=False, stdout=None, stderr=None, group=None,
    timeout=None):

提供された例には、(驚くべきことに) そのようなシナリオは示されていません。

sudo("~/install_script.py")
        sudo("mkdir /var/www/new_docroot", user="www-data")
        sudo("ls /home/jdoe", user=1001)
        result = sudo("ls /tmp/")
        with settings(sudo_user='mysql'):
            sudo("whoami") # prints 'mysql'

ユーザーキーを提供することをお勧めします。

このオープンチケットを見てください:

https://github.com/fabric/fabric/issues/503

run() で ur コマンドを実行してみてください

run('sudo -E pip install virtualenv --upgrade --use-mirrors')
于 2013-02-10T20:54:13.650 に答える
0

これはかなり悪い考えです。パスワードをクリア テキストなどで保存する必要があります。それを行う正しい™方法は実行しています

$ sudo visudo

sudo を構成して、ユーザーがパスワードの入力を求めることなく pip を実行できるようにします。

そうしないと、多くのセキュリティ上の問題が発生します。

于 2013-02-10T22:25:17.183 に答える