一、Expect介绍

Expect是一个用来实现自动交互功能的软件套件。

使用Expect可以模拟手工交互的过程,实现自动与远端程序的交互。例如当执行ssh命令连接服务器时,需要手动输入密码,如果采用Expect,就可以自动交互,无需再人工手动输入密码了。

二、安装Expect

ubuntu系统,执行以下命令安装

apt install expect

查看安装软件

apt show expect

三、使用

  • 注意
    以下的命令都不能在命令行中直接执行,需要在expect脚本中执行

3.1 spawn命令

spawn命令是Expect程序实现自动交互的前提(第一步)

spawn执行一个命令或程序,之后的所有Expect操作都会在这个执行过的命令或程序进程中进行。

  • 语法

spawn [需自动交互的命令或程序]

  • 示例

spawn ssh root@122.122.13.44

3.2 expect命令

第一步使用spawn命令执行命令或程序之后,会提示某些交互式信息,expect命令作用就是对这些交互式信息进行筛选匹配,一旦匹配成功,就执行动作。

  • 语法

expect 表达式 [动作]

  • 示例

spawn ssh root@122.122.13.44
expect “*password” {send “123456\n”}

“*”号表示通配符,一旦交互式信息中出现 *password,就输入信息123456,\n表示换行

expect的高级用法

可以实现在一个expect匹配中进行多次不同的字符串匹配,根据不同的字符串执行不同的处理动作

  • 示例脚本
#!/usr/bin/expect      --->指定expect解析器
spawn ssh root@122.122.13.44 uptime
expect {               --->注意expect和起始大括号之间要有空格"yes/no" {exp_send "yes\r";exp_continue}    --->如果匹配到yes/no,则输入yes;还需要继续进行匹配,则加上exp_continue,达到多次匹配的效果"password" {exp_send "123456\r"}
}
expect eof             --->结束expect

send和exp_send作用类似

3.3 send命令

用来执行动作,与exp_send命令类似

3.4 send_user命令

相当于shell中echo命令,用来打印信息

  • 示例

    执行expect脚本结果如下:

四、Expect程序变量

4.1 普通变量

  • 定义

set 变量名 变量值

  • 打印

puts $变量名 --> 方法1
send_user " $变量名" --> 方法2

  • 示例


执行结果如下:

4.2 特殊参数变量

Expect中也有类似于shell脚本里$1,$2等类似的特殊参量变量,用于接收及控制Expect脚本传参。

使用$argv表示参数数据,[lindex $argv n]接收Expect脚本传参,n从0开始,表示第一个参数

  • 示例

    执行脚本结果如下:

Expect基础使用相关推荐

  1. expect 基础语法学习 及 简单使用

    expect 我们可以理解为一个可以提供自动化交互的工具,无需人的干预. expect需要TCL变成语言的支持. 基本语法 for循环 格式: for 空格 { 设置变量初始值 } 空格 { 条件判断 ...

  2. Expect 教程中文版

    原文链接 本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的. [BUG] 有不少部分,翻译的时候不能作到"信,达".当然了,任何时候都没有做到"雅&qu ...

  3. linux非交互式脚本,Linux expect非交互式执行脚本

    expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...

  4. linux ssh非交互脚本,Linux expect非交互式执行脚本

    expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...

  5. 第12章 ‘expect’和‘assume’

    12.1 'expect' 图12.1'expect'-基础 'expect'在程序块中与'assert'具有相同的语法(而不是语义).请注意,'expect'只能在程序块中使用.它不能像assert ...

  6. expect简介和使用例子

    expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...

  7. Expect用法浅谈

    1. Expect基础语法解释 1.1 cmd arg1 arg2 arg3       一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 . 1.2 $myVa ...

  8. expect 实现自动化交互

    一.简介 expect是一个免费的编程工具,是一套用来实现自动交互功能的软件,expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的. expect基 ...

  9. NeurIPS’20 | 长尾问题太严重?半监督和自监督就可以有效缓解!

    文 | Yuzhe Yang 源 | 知乎 来给大家介绍一下我们的最新工作,目前已被NeurIPS 2020接收:Rethinking the Value of Labels for Improvin ...

最新文章

  1. hdu 4472 Count(递推即dp)
  2. 视觉智能产品发布 阿里云这项世界第一的技术现在人人可用
  3. linux 开机启动设置密码,Linux下Redis设置密码及开机自启动
  4. 代理服务器Tengine的研究与测试
  5. Android AsyncTasks并行执行
  6. 未能正确加载“ProviderPackage”包。
  7. 使用冷门装机助手/流氓软件导致被捆绑安装各种奇奇怪怪软件的问题
  8. 随心测试_Python Se_007下拉列表操作2
  9. Android实现推送PushService通知No…
  10. 如何查看自己的appid以及在微信开发者工具中查看APPID
  11. 计算机打开管理闪退,win10任务管理器闪退怎么解决-解决win10任务管理器闪退的方法 - 河东软件园...
  12. kafka reassign 限速_车主无忧:为什么放弃开源Kafka?
  13. 图片提取利器,从PDF中快速提取图片并存储到本地
  14. 浏览器/html/css面试题
  15. MOSFET开关原理
  16. QQ登陆,获取QQ用户信息
  17. 做自媒体,有哪些免费下载视频剪辑素材的网站?
  18. 平衡二叉排序树--调整方法快速记忆方法(渣男丢妻弃子法)
  19. 刷题笔记(二) 操作系统任务调度问题
  20. android 播放网络电视,HDP直播tv版 V2.0.5 for android (网络电视)

热门文章

  1. 【基础算法】Dijkstra算法,以上海地铁换乘为例,计算最短换乘路径和时间
  2. ISACA调查称目前95%的APT攻击来自社交网站
  3. MINI LED显示屏芯片四周围坝填充用胶方案
  4. PAT(乙级)2022年冬季考试
  5. (计算机图形学)多边形的扫描转换算法——边界标志算法
  6. MSYS2/MinGW-w64安装
  7. C++ 调节PCM音频音量大小
  8. 如何介绍世界上第一台计算机,[世界第一台计算机]计算机简单的自我介绍第一篇...
  9. Mybatis的的批量修改操作
  10. 惊了惊了,三分钟学会七个Python小技巧(建议收藏)