我正在编写一个Linux Shell脚本来自动完成我在Ubuntu 11.04上做的一些事情.
基本上,我正在编写一个shell脚本来安装NGINX,MySQL和PHP,然后配置所有内容.我知道如何通过命令行完成所有事情.
但是,我不知道我将如何处理进程要求用户输入的部分.例如,我使用apt-get安装的某些内容会要求您进行确认,即(Y)es或(N)o.
我究竟如何处理shell脚本中的自动确认,即在被问到时自动确认是或否?
我正在尝试在 Ansible 中对 Debian 上的 exim4 配置进行自动化——到目前为止我们一直在手动配置——但我被困在我正常运行的阶段dpkg-reconfigure exim4-config。
我可以很容易地自动化这些步骤:
/etc/exim4/exim4-config.conf.conf dpkg-reconfigure --frontend noninteractive exim4-config它们在剧本中运行良好,但问题是并非我在交互式提示中看到的所有选项都在此 conf 文件中。例如,第二个设置System mail name没有在 conf 文件中的任何地方指定。也不是最后一个设置,Root and postmaster mail recipient在第一次配置后也不再显示在交互式提示中(为什么?)
然后我看到有些人建议使用debconf-set-selections(here),我尝试调查 - 我安装了debconf-utils软件包然后运行debconf-get-selections- 然后我看到了那里的所有选项,但现在我想知道是否有一种方法可以debconf-set-selections不用不必使用文件组所有的一次性设置,因为我只是想改变的话用exim4关联的值。如果我需要再次运行剧本,我试图避免覆盖可能设置的任何其他值(与 exim4 无关)。
除了将 的输出写入debconf-get-selections文件然后使用 Ansible 的lineinfile/template模块替换我想要更改的值之外,是否有更简单的方法来解决这个问题?我宁愿避免这种方法。