expect 的简单学习与使用
背景
最近工作中总有很多重复的事项.
比较繁琐,想着能够简单一点是一点的角度
准备采用expect来建华部分工作量.
其实还可以使用其他方式来处理.
但是感觉expect还是能够简单明了的.
所以暂时不引入python这么重的工具
简介
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:
Expect是一个用来实现自动交互功能的软件套件
(Expect [is a] software suite for automating interactive tools)。
使用它系统管理员 的可以创建脚本用来实现对命令或程序提供输入,
而这些命令和程序是期望从终端(terminal)得到输入,
一般来说这些输入都需要手工输入进行的。
Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。
甚至可以实现实现简单的BBS聊天机器人。 :)
下载与安装
CentOS,OpenEuler,Anolis
都可以使用
yum install expect -y 的方式进行安装.
如果是不联网的机器
可以使用 yum install yum* -y
然后yumdownloader expect 的方式下载rpm包便于安装.
我这边下载好的介质主要有:
expect-5.45-14.el7_1.x86_64.rpm
expect-5.45.4-3.ky10.aarch64.rpm
expect-5.45.4-6.oe2203.x86_64.rpm
expect 的命令写法
expect有四个核心的指令:
spawn: 启动新进程,后跟新进程要执行的指令;
expect: 指定要监听的字符串,如果spawn进程返回了匹配的字符串
(如标准输入的提示信息),则触发send;
send: 发送指定的字符串到spawn进程,代替标准输入;
interact: 用户参与交互;
注意还有一个 exp_continue 的命令,用于继续等待一下次的输入.
学习来源:https://www.jianshu.com/p/e70cb5979678
一个样例
- 场景是我要进行一个数据库实例的注册:
- 注意我增加了一个sleep 4 避免启动满是无法处理.
- 注意不同的数据库的选项不一样, 需要严格进行处理.
- 注意输入项目可以使用 \n或者是\r表示回车.前面不能有空格.
#!/usr/bin/expect
spawn ./startup-linux.sh
sleep 4
expect {
"请选择需要执行的操作" { send "3\n";exp_continue }
"kingbase" { send "3\n";exp_continue }
"请输入数据库服务器地址" { send "10.110.139.206\n";exp_continue }
"请输入数据库服务器端口号" { send "1521\n";exp_continue }
"请输入数据库服务名" { send "ora19cpdb\n";exp_continue }
"请输入数据库账户名" { send "cloud2211\n";exp_continue }
"请输入数据库密码:" { send "Testxxxx?!\n";exp_continue }
"是否继续其他操作" { send "N\n" }
}
expect 的简单学习与使用的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- shell expect的简单用法【转】
用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ######## ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
随机推荐
- GaussDB(DWS)查询过滤器原理与应用
摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔离反复被终止的查询,防止烂SQL再次执行. 本文分享自华为云社区<GaussDB(DWS)查询过滤器原理与应用> ...
- 想会用synchronized锁,先掌握底层核心原理
摘要:synchronized锁修饰方法和代码块时底层实现上是一样的,但是在修饰方法时,不需要JVM编译出的字节码完成加锁操作,而synchronized在修饰代码块时,是通过编译出来的字节码生成的m ...
- ModelBox姿态匹配:抖抖手动动脚勤做深呼吸
摘要:本案例使用Windows版本的ModelBox SDK进行二次开发,主要是针对姿态匹配案例开发实践. 本文分享自华为云社区<姿态匹配:抖抖手动动脚勤做深呼吸>,作者:吴小鱼. 在之前 ...
- 华为云GaussDB:发挥生态优势,培养应用型DBA
摘要:GaussDB首要的任务是解决华为的业务连续性的需求,同时也是要确保使用GaussDB的客户的业务能够连续,所以我们坚持战略投入,坚持从每一行代码,坚持从生态开始来构建整个数据库体系. 本文分享 ...
- 使用 Python Poetry 进行依赖管理
摘要:在本教程中,您探索了如何创建新的 Python Poetry 项目以及如何将 Poetry 添加到现有项目中. 本文分享自华为云社区<使用 Python Poetry 进行依赖管理> ...
- Axure 进度条制作
拖两个矩形,一个用来做边框,另一个用来做进度 下图进度条的宽要设为2,如果是1的话,看不到背景色动 百分比 进度条 百分比 [[Math.floor(jdt.width/bk.width100)]] ...
- Sublime Text Python 代码提示插件 Anaconda
1.Ctrl+Shift+P -> install package 安装 Anaconda 查看Python 安装路径 { "python_interpreter":&quo ...
- Mac下Homebrew替换镜像
替换git和homebrew镜像源 一.git加速 查找域名对应的地址 nslookup github.com nslookup github.global.ssl.fastly.Net 修改host ...
- 题解| CF1561D2. Up the Strip(递推)
题目链接:Here 这个思路学习自 Harris-H ,考虑递推而不是DP 与 D1 不同,开始考虑 \(f_{i-1} \to f_i\) 显然操作 1 多了 \(f_{i-1}\) ,操作2 多了 ...
- Codeforces Round #717 (Div. 2) 个人题解 A~C (A思維,B位運算,C背包DP)
1516A. Tit for Tat 題意: 給定大小為 \(n\) 的數組和可操作次數 \(k\) , 每次操作都選定兩個數(如果 \(1 \le a_i\) ),使第一個數 - \(1\) ,另一 ...