Python Fabric:如何响应键盘输入?

24 投票
6 回答
14723 浏览
提问于 2025-04-15 19:09

我想要自动回答一些程序提出的问题,比如MySQL会要求输入密码,或者在我想用./manage.py rebuild_index重建我的haystack索引时,apt会问我“是”或者其他的确认问题。

对于MySQL,我可以使用--password=这个选项来直接输入密码,我相信apt也有类似“安静模式”的选项。但我该如何把回答传递给其他程序呢?

6 个回答

1

这两种方法都是有效的,可以正常工作。

我选择了第一种方法,因为我不想和我的部署系统有任何互动。

所以我使用的解决方案是:

% yes | ./manage.py rebuild_index

警告:这将不可逆转地删除你搜索索引中的所有内容。
在这之后,你的选择是从备份中恢复,或者通过 rebuild_index 命令重新建立索引。
你确定要继续吗? [y/N]
因为你这么说了,所以正在从你的索引中删除所有文档。
所有文档已删除。
正在索引27个项目。

39

如果你想让用户确认某个操作,可以使用确认方法。

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

或者,如果你想从用户那里获取一些输入,可以使用提示方法。

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

为什么不能直接使用管道呢?

举个例子,如果你想自动接受某些东西,可以用yes命令,它会不停地输出y

yes | rm *.txt


(来源: wikimedia.org)

撰写回答