Python fabric 如何发送密码和用户提示的是/否选项

1 投票
2 回答
1354 浏览
提问于 2025-04-30 05:17

我创建了一个包含多个主机的fabfile。

我正在自动化我的实验。当我运行命令“sudo adduser --ingroup hadoop hduser”时,它会询问以下信息。

  1. 新的Unix密码
  2. 确认密码
  3. 全名
  4. 房间、电话等
  5. 这些信息正确吗?是/否

我想在脚本中直接传递这些信息,而不想让用户输入。请问我该怎么做?

谢谢

Navaz

暂无标签

2 个回答

1

另一个选择是使用 fexpect,这是一个 fabric 的扩展,可以让你对提示做出回应:

from ilogue.fexpect import expect, expecting, run 

prompts = []
prompts += expect('What is your full name?','John Doe')
prompts += expect('is this information Correct? Y/N','Y')

with expecting(prompts):
    sudo('adduser --ingroup hadoop hduser')
1

你为什么不直接用管道呢?

比如说,如果你想让程序自动接受某个操作,可以用“yes”这个命令,它会不停地输出“y”。

yes | rm *.txt

在你的情况下:

local('echo 'your_super_password\n' | sudo adduser --ingroup hadoop hduser')

撰写回答