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...=========================== ...
随机推荐
- 零代码修改,教你Spring Cloud应用轻松接入CSE
摘要:本文介绍了Sermant Agent的接入原理和如何使用Sermant Agent无修改接入CSE. 本文分享自华为云社区<Spring Cloud应用零代码修改接入华为云微服务引擎CSE ...
- PyCharm View as Array 查看数组
代码中设置断点. 在Debug Variables 里面,点击 View as Array 如下图所示:
- Vue项目部署Nginx后,刷新页面出现404问题
在Nginx配置文件nginx.conf中加入如下配置.(index.html根据实际页面配置) 增加:try_files $uri $uri/ /index.html; #解决页面刷新404问题 s ...
- PlayWright安装及使用
PlayWright是由业界大佬微软(Microsoft)开源的端到端 Web 测试和自动化库,可谓是大厂背书,功能满格,虽然作为无头浏览器,该框架的主要作用是测试 Web 应用,但事实上,无头浏览器 ...
- 拥抱智能,AI 视频编码技术的新探索
随着视频与交互在日常生活中的作用日益突显,愈发多样的视频场景与不断提高的视觉追求对视频编码提出更高的挑战.相较于人们手工设计的多种视频编码技术,AI 编码可以从大数据中自我学习到更广泛的信号内在编码规 ...
- PS 项目报工与取消
1.项目报工 1.1.CN25 1.2.BAPI:BAPI_NETWORK_CONF_ADD "-----------------------------@斌将军-------------- ...
- L2-016 愿天下有情人都是失散多年的兄妹 (25分) (简单递归判断)
L2-016 愿天下有情人都是失散多年的兄妹 (25分) 呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一 ...
- 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下, "Dll加固混淆针对Unity游戏,对 ...
- 在vue项目中使用momentjs获取今日、昨日、本周、本月、上月、本年、上年等日期,时间比较计算
https://blog.csdn.net/qq_15058285/article/details/119925056
- P3842-DP【黄】
想搜索到最后一层,就必得先完成前面层的搜索任务,这构成了对状态转移的启示,即当前层的DP值应该是此前层转移过来后得到的最佳值. 但这道题看数据范围应该不能用二维数组,抱着侥幸的心理我使用了动态二维数组 ...