我是 Chef 新手,正在尝试设置 Ubuntu VM 以通过自动安装我们的产品进行测试。我可以下载 .tgz、提取它并使用 bash 资源执行安装程序。
我遇到的问题是我们的安装脚本强制对命令行安装进行 EULA 检查。它在 shell 脚本中有类似以下内容:
# various statements and input to expect from stdin
echo "You must accept our EULA to install the software"
read ENTER
more EULA.txt
echo "Do you accept the EULA?"
# additional input expected from stdin
我可以使用响应文件轻松地从标准中添加预期的输入,然后使用 启动安装./install.sh < response.txt
,但一旦more
执行,此操作就会停止工作。more 命令看不到响应文件中的输入,并且仍然期望在接受 eula 之前使用“q”退出命令。
使用 chef 自动执行此类安装的正确方法是什么?除了简单地重写 install.sh 脚本以忽略 EULA 行之外。
答案1
还将输出重定向到某处more
。如果标准输出不是终端,则将不暂停地显示整个文件,然后退出。
例如:
./install.sh < response.txt | cat
expect
尽管对于这样的场景你确实应该使用类似的东西。