2013-02-10 1 views
1

У меня есть сценарий ткани, которая в настоящее время использует такие команды, как:как сделать sudo -E ..... в ткань?

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

то, что я хочу знать, как я пройти Sudo опцию -E, чтобы запустить это?

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

EDIT:

попытался это:

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

, но это, кажется, передать возможность пип установить вместо Судо

EDIT 2:

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

дает мне Тип reError: формат требует отображение

EDIT 3:

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

дает мне TypreError: не все аргументы преобразуются во струнной форматированием

+0

Вы можете попробовать: env.sudo_prefix = "sudo -E -S -p '% s'" – Redian

+0

, который работает, но, похоже, не переопределяет исходный файл sudo_prefix, он возвращает меня к исходной ошибке, которую я получал, ошибка 1 при запуске кода установки пакета – Calum

ответ

1

Из исходного материала файла. метод Судо подписи выглядит следующим образом:

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

Have ваш попытался запустить ур команду с пробегом()

run('sudo -E pip install virtualenv --upgrade --use-mirrors') 
+0

Я также нашел [sudo_prefix] (http://docs.fabfile.org/en/1.5/usage/env.html?highlight=options), но havent получил его работу – Calum

+0

run («sudo -E pip install virtualenv --upgrade --use-mirror»), похоже, работает на моем хост-компьютере, но когда я запускаю его с моего виртуального бокса «ubuntu-server», он возвращается с кодом ошибки 1 – Calum

+0

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

0

Это очень плохая идея, она заставит вас хранить пароли, текст и т. д. Право ™ способ сделать это работает

$ sudo visudo 

и настройка Sudo, чтобы разрешить пользователю запускать пип без запроса пароля.

В противном случае вы создаете ряд проблем с безопасностью.

+0

способ, которым я в настоящее время его использую: sudo ('pip install virtualenv --upgrade --use-mirror') требует от пользователя только ввести пароль в первый раз и не ode в пароле – Calum

 Смежные вопросы

  • Нет связанных вопросов^_^