expect介绍和使用

摘要:
-d: 调试模式,它可以在运行时输出一些诊断信息,并在脚本开头使用exp_ Internal1。如果文件名为“-”,则从stdin读取。Expect中最关键的四个命令是send、Expect、spawn和contact。

安装

expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是:

spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成, 退出.

由于expect是基于tcl的, 所以需要确保系统中安装了tcl:

# 检查是否安装了tcl:
[root@localhost ~]# whereis tcl
tcl: /usr/lib64/tcl8.5 /usr/include/tcl.h /usr/share/tcl8.5

# 如果没有安装, 使用yum安装tcl和expect:
[root@localhost ~]# yum install -y tcl
[root@localhost ~]# yum install -y expect

# 查看expect的安装路径:
[root@localhost ~]# command -v expect
/usr/bin/expect

mac端安装expect

下载tcl,expect

配置tcl

sudo cp tcl8.4.20-src.tar.gz /usr/local/ &&
cd /usr/local/ &&
sudo tar -zxvf tcl8.4.20-src.tar.gz &&
cd tcl8.4.20 &&
cd unix &&
sudo ./configure --prefix=/usr/local/tcl --enable-shared &&
sudo make &&
sudo make install &&
sudo cp ./tclUnixPort.h ../generic/

安装expect

sudo cp expect5.45.4.tar.gz /usr/local/ &&
cd /usr/local/ &&
sudo tar -zxvf expect5.45.4.tar.gz &&
cd expect5.45.4 &&
sudo ./configure --prefix=/usr/local/expect --with-tcl=/usr/local/tcl/lib --with-tclinclude=/usr/local/tcl8.4.20/generic &&
sudo make &&
sudo make install

expect常用命令

spawn	启动新的交互进程, 后面跟命令或者指定程序
expect	从进程中接收信息, 如果匹配成功, 就执行expect后的动作
send	向进程发送字符串
send exp_send	用于发送指定的字符串信息
exp_continue	在expect中多次匹配就需要用到
send_user	用来打印输出 相当于shell中的echo
interact	允许用户交互
exit	退出expect脚本
eof	expect执行结束, 退出
set	定义变量
puts	输出变量
set timeout	设置超时时间

参数选项

  • -c:执行脚本前先执行的命令,可多次使用。
  • -d:debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用exp_internal 1相似。
  • -D:启用交换调式器,可设一整数参数。
  • -f:从文件读取命令,仅用于使用#!时。如果文件名为"-",则从stdin读取(使用"./-"从文件名为-的文件读取)。
  • -i:交互式输入命令,使用"exit"或"EOF"退出输入状态。
  • --:标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!/usr/bin/expect --
  • -v:显示expect版本信息。

四个命令

Expect中最关键的四个命令是send,expect,spawn,interact。

send:用于向进程发送字符串
expect:从进程接收字符串
spawn:启动新的进程
interact:允许用户交互

参考

expect(1)命令

教你如何在Linux中通过expect工具实现脚本的自动交互

免责声明:文章转载自《expect介绍和使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇性能测试篇 :Jmeter监控服务器性能Blender最新新手安装+常用快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用jest进行单元测试

以前,写完一段代码我也是直接调用或者实例化一下,发现过了就把测试相关部分删了。今年的不幸与坎坷使我有很长一段时间去思考人生,不想将就了,鲁棒健壮的程序,开发和测试应该是分得很开的,于是我选择jest去做单元测试这件事。 为什么要做单元测试 在开始之前,我们先思考这样一个问题,我们为什么要做单元测试? 不扯犊子直接说吧,第一点,用数据、用茫茫多的测试用例去告...

expect安装去测试

1.下载expect和tcl 下载地址:http://download.csdn.net/download/tobyaries/5754943 2.安装expect tar -zxvf tcl8.4.11-src.tar.gztar -zxvf expect-5.43.0.tar.gzcd tcl8.4.11/unix./configuremake &am...

JavaScript单元测试工具-Jest

标注: 首先这并不是一篇完整的关于Jest的教程,只是个人在接触jest学习的一点随手笔记,大部分内容都是对官方文档的一些翻译。 ------------------------------------------------------------------------------------------------------------------...

Linux Tcl和Expect的安装

一、先安装Tcl 1、下载:tcl版本 8.4.19 http://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz/download 2、解压缩源码包 tar xfvz tcl8.4.19-src.tar.gz 3、安装配置 #cd tcl8.4.19/unix #....

转 在shell脚本中使用expect实现scp传输问题

1.安装expect expect用于shell脚本中自动交互,其是基于tcl编程语言的工具。所以安装expect首先安装tcl。本文中使用的是expect5.45和tcl8.6.6。 安装tcl [root@tseg0 /]$ mkdir /tools [root@tseg0 /]$ tar -zxvf tcl8.6.6-src.tar.gz [roo...

expect入门--自动化linux交互式命令

很多linux程序比如passwd,ftp,scp,ssh等自身并没有提供一种静默式的执行选项,而是依赖于运行时的终端输入来进行后一步的操作比如更改密码、文件上传、下载等。虽然有些编程语言如java嵌入了不少这些常用工具的API比如jcsh等,但是毕竟他们不够自然和顺手。虽然也可以使用ssh免登陆方式,但当机器太多且密码可能经常会更改的时候,每次大批量修改...