我正在给veracryp加油,需要以非交互模式运行安装脚本。要运行脚本,如果以交互方式运行,我需要传递脚本要求的答案。问题是,如果我通过命令管道传递答案或从文件传递答案,则会出现错误:
echo -e "1\n\nq\ny\ny\n\n" | /opt/tdp/veracrypt-1.23-setup-console-x64
Verifying archive integrity... 100%
All good. Uncompressing VeraCrypt 1.23 Installer 100%
Error: Terminal required
如果我运行相同的脚本而不使用管道,则该脚本可以正常运行。
我已经使用Expect实现了这种自动化(根据脚本是与其他交互式程序“对话”的程序)
如果不存在,则需要将其安装在docker映像中。
您将需要创建一个带有问题提示和答案的期望脚本。
在install-vera-crypt.exp文件中:
#!/usr/bin/expect -f
set timeout -1
spawn /opt/tdp/veracrypt-1.23-setup-console-x64
expect "The text you expect to answer 1\r"
send -- "1\r"
expect "The text you expect to answer q\r"
send -- "q\r"
...
expect eof
然后,您可以使用以下命令执行它: expect -f install-vera-crypt.exp
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。