开源实例之自动交互工具expect
前言
本篇介绍用 expect 实现自动交互。
问题描述
本系列的容器镜像都是用 Dockerfile 自动构建,一般情况是修改安装脚本写入默认值,但也有的安装程序是二进制包,需要交互输入。为了实现自动构建(无人值守模式),就需要有自动交互的工具辅助。
解决办法
下面以安装主机面板 appnode 为例,使用 expect 来解决自动交互的问题。
expect介绍
expect是建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。
expect安装
#CentOS
yum install expect
#Debian/Ubuntu
apt install expect
expect使用
在appnode的安装过程中,需要四次输入:
* Port [default: 8888]:
* Admin username [default: admin]:
* Admin password [default: ***]:
* Is configuration right? [Y/n]
对应的expect如下:
expect << EOF
set time 10
spawn /install/install-ccenter-x86_64
expect "* Port"
send "8888\r"
expect "* Admin username"
send "admin\r"
expect "* Admin password"
send "Abcd1234$\r"
expect "* Is configuration right?"
send "Y\r"
expect eof
EOF
后记
标签: 开源实例