Expect基础使用
一、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基础使用相关推荐
- expect 基础语法学习 及 简单使用
expect 我们可以理解为一个可以提供自动化交互的工具,无需人的干预. expect需要TCL变成语言的支持. 基本语法 for循环 格式: for 空格 { 设置变量初始值 } 空格 { 条件判断 ...
- Expect 教程中文版
原文链接 本教程由*葫芦娃*翻译,并做了适当的修改,可以自由的用于非商业目的. [BUG] 有不少部分,翻译的时候不能作到"信,达".当然了,任何时候都没有做到"雅&qu ...
- linux非交互式脚本,Linux expect非交互式执行脚本
expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...
- linux ssh非交互脚本,Linux expect非交互式执行脚本
expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...
- 第12章 ‘expect’和‘assume’
12.1 'expect' 图12.1'expect'-基础 'expect'在程序块中与'assert'具有相同的语法(而不是语义).请注意,'expect'只能在程序块中使用.它不能像assert ...
- expect简介和使用例子
expect简介 expect是一款自动化的脚本解释型的工具. expect基于tcl脚本,expect脚本的运行需要tcl的支持. expect对一些需要交互输入的命令很有帮助,比如ssh ftp ...
- Expect用法浅谈
1. Expect基础语法解释 1.1 cmd arg1 arg2 arg3 一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 . 1.2 $myVa ...
- expect 实现自动化交互
一.简介 expect是一个免费的编程工具,是一套用来实现自动交互功能的软件,expect 是由Don Libes基于Tcl(Tool Command Language )语言开发的. expect基 ...
- NeurIPS’20 | 长尾问题太严重?半监督和自监督就可以有效缓解!
文 | Yuzhe Yang 源 | 知乎 来给大家介绍一下我们的最新工作,目前已被NeurIPS 2020接收:Rethinking the Value of Labels for Improvin ...
最新文章
- hdu 4472 Count(递推即dp)
- 视觉智能产品发布 阿里云这项世界第一的技术现在人人可用
- linux 开机启动设置密码,Linux下Redis设置密码及开机自启动
- 代理服务器Tengine的研究与测试
- Android AsyncTasks并行执行
- 未能正确加载“ProviderPackage”包。
- 使用冷门装机助手/流氓软件导致被捆绑安装各种奇奇怪怪软件的问题
- 随心测试_Python Se_007下拉列表操作2
- Android实现推送PushService通知No…
- 如何查看自己的appid以及在微信开发者工具中查看APPID
- 计算机打开管理闪退,win10任务管理器闪退怎么解决-解决win10任务管理器闪退的方法 - 河东软件园...
- kafka reassign 限速_车主无忧:为什么放弃开源Kafka?
- 图片提取利器,从PDF中快速提取图片并存储到本地
- 浏览器/html/css面试题
- MOSFET开关原理
- QQ登陆,获取QQ用户信息
- 做自媒体,有哪些免费下载视频剪辑素材的网站?
- 平衡二叉排序树--调整方法快速记忆方法(渣男丢妻弃子法)
- 刷题笔记(二) 操作系统任务调度问题
- android 播放网络电视,HDP直播tv版 V2.0.5 for android (网络电视)
热门文章
- 【基础算法】Dijkstra算法,以上海地铁换乘为例,计算最短换乘路径和时间
- ISACA调查称目前95%的APT攻击来自社交网站
- MINI LED显示屏芯片四周围坝填充用胶方案
- PAT(乙级)2022年冬季考试
- (计算机图形学)多边形的扫描转换算法——边界标志算法
- MSYS2/MinGW-w64安装
- C++ 调节PCM音频音量大小
- 如何介绍世界上第一台计算机,[世界第一台计算机]计算机简单的自我介绍第一篇...
- Mybatis的的批量修改操作
- 惊了惊了,三分钟学会七个Python小技巧(建议收藏)