我有两个问题,我试图用面料来解决python。
这些都应该是可能的,如上面的链接所示,但我不能让它们工作。当我通过fab test
from fabric.api import run, env, settings
env.hosts = ['<user>@<host>']
env.passwords = {'<user>@<host>': '<password>'}
def test():
with settings(prompts={"Please select a menu item: ": "1",}):
return
run("ls")
我的输出是:
[<user>@<host>] Login password for '<user>':
此时我必须输入密码,而不是自动输入。然后根据远程主机,我得到一个我想自动回复的菜单,但是我的提示的自动完成功能不起作用。
[<user>@<host>] out: <a menu>
[<user>@<host>] out: Please select a menu item:
我需要做些什么来自动输入密码并自动回答此提示?
答案 0 :(得分:0)
如果您查看env.passwords上的文档,则说:
这本词典主要供内部使用,并且已经填写 自动作为每主机字符串密码缓存。钥匙是完整主机 字符串和值是密码(字符串)。
重要的注意事项是上面的警告:
警告
如果您手动修改或生成此dict,则必须使用 具有用户和端口值的完全限定主机字符串。请参阅链接 上面有关主机字符串API的详细信息。
按照上述警告,确保主机名是FQDN,甚至可以添加端口号:22
,看看它是否有效。
至于提示,只要你在<{em>里面 with
块中运行命令(我不能从你的示例代码中告诉),这应该有效。同时检查提示后面是否有空格,如果没有从prompts
键中删除它。