在日常使用Linux系统中,经常会碰到需要与系统进行交互的情况,此时expect就可以派上用场了,expect命令可以实现人机交互,无需人工操作,通过expect即可实现自动交互。
expect主要参数说明如下:
spawn 交互程序开始后面跟命令或者指定程序
expect 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send 用于发送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
send_user 用来打印输出 相当于shell中的echo
exit 退出expect脚本
eof expect执行结束 退出
set 定义变量
puts 输出变量
set timeout 设置超时时间
interact 允许用户交互
安装expcet:
环境准备: centos7
1、直接通过yum来安装,可以执行命令如下:
yum -y install expect tcl
2、通过软件包的方式进行安装:
由于expect是基于tcl的基础上创建的,因此需要先安装tcl
首先下载tcl安装包,可以执行命令如下:
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
下载完成后解压软件,执行命令如下:
进入解压后的目录中,执行编译安装,命令如下:
cd tcl8.4.11/unix
./configure --prefix=/usr/local/tcl --enable-shared
make && make install
安装完成后,进入源代码目录,将unix下面的tclUnixPort.h拷贝到上一级目录的generic目录中,如图:
接下来安装expect,可通过wget命令下载此安装包,命令如下:
wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
解压软件包,并进入解压目录,执行命令如下:
执行命令进行编译安装,命令如下:
./configure --prefix=/usr/local/expect --with-tcl=/usr/local/tcl/lib --with-tclinclude=../tcl8.4.11/generic
make && make install
注意:上方的编译安装的时候关联了tcl的源代码目录以及安装目录
安装完成后创建软连接,执行命令如下:
ln -s /usr/local/tcl/bin/expect /usr/bin/expect
在命令行输入expect后可以看到弹出如下图所示:
至此:expect安装完成。
例子1:下面的脚本实现的功能是自动修改root密码,本脚本以bash脚本为基础,添加expect命令,如图:
从上图可以看到,首先定义密码变量,spawn参数表示执行后面的命令,expect表示当匹配到指定字符串的时候,通过send发送指定,eof表示expect执行结束,退出,\r表示回车
例子2:下面的函数实现的功能是对磁盘进行分区,在shell脚本中调用函数即可,如图:
领取专属 10元无门槛券
私享最新 技术干货