Ответ 1
Почему ты не можешь просто использовать трубы?
Например, для автоматического автоматического принятия просто используйте yes
, которое просто выводит бесконечный поток y
.
yes | rm *.txt
(источник: wikimedia.org)
Я хотел бы автоматизировать ответ для некоторого вопроса, вызванного некоторыми программами, например mysql, запрашивающим пароль, или apt с просьбой "да" или... когда я хочу перестроить индекс haystack с помощью. /manage.py rebuild_index.
Для MySQL я могу использовать ключ -password =, и я уверен, что apt имеет "тихий" вариант. Но как я могу передать ответ другим программам?
Почему ты не можешь просто использовать трубы?
Например, для автоматического автоматического принятия просто используйте yes
, которое просто выводит бесконечный поток y
.
yes | rm *.txt
(источник: wikimedia.org)
Если вы ищете пользователя для подтверждения операции, используйте метод confrim.
if fabric.contrib.console.confirm("You tests failed do you want to continue?"):
#continue processing
Или, если вы ищете способ ввода данных от пользователя, используйте метод подсказки.
password = fabric.operations.prompt("What is your password?")
Эти оба метода действительны и работают.
Я выбираю первый, потому что я не хотел иметь никакого взаимодействия с моей системой развертывания.
Итак, вот решение, которое я использовал:
% yes | ./manage.py rebuild_index
WARNING: This will irreparably remove EVERYTHING from your search index.
Your choices after this are to restore from backups or rebuild via the rebuild_index
.
Вы уверены, что хотите продолжить? [Y/N]
Удаление всех документов из вашего индекса, потому что вы так сказали.
Все документы удалены.
Индексирование 27 элементов.
Код >
Теперь версия разработки Fabric (1.0a) поддерживает взаимодействие с удаленными программами. http://docs.fabfile.org/1.0a/usage/interactivity.html
Поздний ответ, но надеюсь, что это поможет людям с подобными проблемами.
Другой момент:
yes/no/y/n
включен.проблема
[hostxxx] out: Type 'c' if you want to use the Commercial Edition.
[hostxxx] out: Type 'o' if you want to use the Open Source Edition.
[hostxxx] out: Type '3' to view the GNU General Public License version 3.
[hostxxx] out: Type 'L' to view the Lesser GNU General Public License version 2.1.
[hostxxx] out: Type 'yes' to accept this license offer.
[hostxxx] out: Type 'no' to decline this license offer.
Решение:
Используйте printf
вместо yes
чтобы добавить больше гибкости, в то же время это работает как брелок в parallel
режиме.
@parallel
def demo_multi_input():
run('printf "o\nyes\n"|./configure --prefix=/home/work/bin/qt')
Используйте этот код:
run("echo yes|./manage.py rebuild_index")