mysqlがパスワードを要求したり、aptが「yes」を要求したりするなど、いくつかのプログラムによって促された質問への応答を自動化したいと思います。 。
MySQLの場合、-password =スイッチを使用でき、aptには「quiet」のようなオプションがあると確信しています。しかし、どうすれば他のプログラムに応答を渡すことができますか?
mysqlがパスワードを要求したり、aptが「yes」を要求したりするなど、いくつかのプログラムによって促された質問への応答を自動化したいと思います。 。
MySQLの場合、-password =スイッチを使用でき、aptには「quiet」のようなオプションがあると確信しています。しかし、どうすれば他のプログラムに応答を渡すことができますか?
操作を確認するユーザーを探している場合は、confrimメソッドを使用します。
if fabric.contrib.console.confirm("You tests failed do you want to continue?"):
#continue processing
または、ユーザーから入力を取得する方法を探している場合は、promptメソッドを使用します。
password = fabric.operations.prompt("What is your password?")
なぜパイプだけが使えないのですか?
たとえば、自動自動受け入れの場合は、を使用します。yes
これは、の終わりのないストリームを出力するだけですy
。
yes | rm *.txt
(出典:wikimedia.org)
これらの両方の方法は有効であり、機能します。
デプロイメントシステムとのやり取りをしたくなかったので、最初のものを選択します。
だからここに私が使用した解決策があります:
% 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
command.
Are you sure you wish to continue? [y/N]
Removing all documents from your index because you said so.
All documents removed.
Indexing 27 Items.
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")