暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux命令之expect用法

运维DevOps 2021-02-15
1047

在日常使用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脚本中调用函数即可,如图:


文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论