杜郎俊赏 - dujun.io

开源实例之自动交互工具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

后记

体验更多开源实例

标签: 开源实例
日期:2023-03-15