Python Fabric: как отвечать на ввод с клавиатуры?

Я хотел бы автоматизировать ответ по некоторому вопросу, вызванному некоторыми программами, например mysql, запрашивающим пароль, или apt с просьбой «да» или … когда я хочу перестроить индекс haystack с помощью ./manage.py rebuild_index ,

Для MySQL я могу использовать переключатель –password =, и я уверен, что apt имеет «тихий» вариант. Но как я могу передать ответ на другие программы?

  • Как установить целевые узлы в файле Fabric
  • Не удается заставить пример сеанса экрана экрана Fabric работать
  • Передача параметра в задание на ткань
  • Как git совершить ничего без ошибки?
  • Получить текущее значение списка env.hosts с помощью библиотеки Fabric Fabric
  • Лучший способ добавить переменную окружения в ткань?
  • Запись в удаленный файл с помощью Fabric
  • Использование Python Fabric без инструмента командной строки (fab)
  • 5 Solutions collect form web for “Python Fabric: как отвечать на ввод с клавиатуры?”

    Почему вы не можете использовать трубы ?

    Например, для автоматического автоматического принятия, просто используйте yes , который просто выводит бесконечный поток y .

     yes | rm *.txt 

    http://upload.wikimedia.org/wikipedia/en/thumb/f/f6/Pipeline.svg/280px-Pipeline.svg.png

    Если вы ищете пользователя для подтверждения операции, используйте метод confrim.

     if fabric.contrib.console.confirm("You tests failed do you want to continue?"): #continue processing 

    Или, если вы ищете способ ввода данных от пользователя, используйте метод подсказки.

     password = fabric.operations.prompt("What is your password?") 

    Версия разработки Fabric (1.0a) теперь поддерживает взаимодействие с удаленными программами. http://docs.fabfile.org/1.0a/usage/interactivity.html

    Эти оба метода действительны и работают.

    Я выбираю первый, потому что я не хотел иметь никакого взаимодействия с моей системой развертывания.

    Итак, вот решение, которое я использовал:

    % yes | ./manage.py rebuild_index

    ПРЕДУПРЕЖДЕНИЕ. Это приведет к необратимому удалению ВСЕГО из вашего индекса поиска. После этого вы можете восстановить резервные копии или перестроить с помощью команды rebuild_index . Вы уверены, что хотите продолжить? [y / N] Удаление всех документов из вашего индекса, потому что вы сказали это. Все документы удалены. Индексирование 27 элементов.

    Используйте этот код:

     run("echo yes|./manage.py rebuild_index") 
    Python - лучший язык программирования в мире.