2017-01-12 8 views
0

Вот мой fabfilefabric: почему я не могу получить локальную («историю»), чтобы распечатать что-нибудь?

from fabric.api import local, task 

@task 
def tracking(suffix=""): 

    buffer_ = "*" * 40 
    print (buffer_) 
    local("whoami") 
    print (buffer_) 
    local("env | grep dn") 

    #this one comes out empty... 
    print (buffer_) 
    out = local("history") 
    print (buffer_) 

Все печатает, как и следовало ожидать, за истории исключением:

**************************************** 
[localhost] local: whoami 
jluc 
**************************************** 
[localhost] local: env | grep dn 
dn_cb=/Users/jluc/.berkshelf/cookbooks 
dn_cc=/Users/jluc/kds2/chef/chef-repo/cookbooks 
dn_khtmldump=/Users/jluc/kds2/out/tests/dump2static 
dn_cv=/Users/jluc/kds2/chef/vagrant/ubuntu2 
**************************************** 
[localhost] local: history 
**************************************** 

Но ничего плохого в истории в командной строке ...

history | tail -5

613 history 
    614 fab -f fabfile2.py tracking 
    615 history | tail -5 
    616 cls 
    617 history | tail -5 

Что дает? Добавление shell="/bin/bash" тоже не помогло.

MacOs Sierra

ответ

1

Согласно docs:

местный в настоящее время не может одновременно печатать и захватывать вывод, как и бег/Судо сделать. Захват kwarg позволяет вам переключаться между печатью и захватом по мере необходимости, а по умолчанию - False.

Я бы интерпретировал это как значение, если вы хотите, чтобы команда history работала, вам нужно сначала захватить вывод. Попробуйте изменить все свои команды local, чтобы включить как shell="/bin/bash", так и capture=True

+0

Я пробовал как захват, так и bin/bash, и это не помогло. Но, только с ** историей ** это не работает. Мне не нужен захват, поскольку я использую ** ** ** перенаправление. 'subprocess.check_output (" history ")' также не работает. Поэтому я закончил работу непосредственно в функции bash, которая вызывает fab * и * history. –

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

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