背景

最近工作中总有很多重复的事项.
比较繁琐,想着能够简单一点是一点的角度
准备采用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 的简单学习与使用的更多相关文章

  1. Log4j简单学习笔记

    log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...

  2. shiro简单学习的简单总结

    权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...

  3. CentOS 简单学习 firewalld的使用

    1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...

  4. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  5. shell expect的简单用法【转】

    用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下:  ######## ...

  6. 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习

    嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...

  7. Linux——帮助命令简单学习笔记

    Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...

  8. OI数学 简单学习笔记

    基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...

  9. mongodb,redis简单学习

     2.mongodb安装配置简单学习                   配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作                 ...

  10. html css的简单学习(三)

    html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...

随机推荐

  1. 华为云河图KooMap:夯实数字孪生底座,点燃燎原星火

    摘要:7月8日,华为开发者大会2023(Cloud)华为云河图KooMap技术分论坛在东莞溪村顺利举办. 7月8日,华为开发者大会2023(Cloud)华为云河图KooMap技术分论坛在东莞溪村顺利举 ...

  2. “绝影”机器狗如何利用ModelArts强化学习算法更改导航轨迹

    摘要:利用ModelArts平台云端协同进行强化学习AI能力部署,导航机器狗绕开火焰关闭可燃气体开关灭火. 在刚刚结束的HC Keynote中,为大家演示了基于华为ModelArts和Atlas 20 ...

  3. MySQL 数据分组后取第一条数据

    SQL SERVER数据分组后取第一条数据--PARTITION BY -- 不加 distinct(a.id) order by 会有问题 导致获取出来的数据不对 SELECT id,title,d ...

  4. Codeforces 670C (离散化入门题)

    原题链接:https://codeforces.com/problemset/problem/670/C 题目大意: 有 n 个人,每人会且仅会一种语言. (n ≤ 2e5) 语言有各自的编号(≤ 1 ...

  5. 数字孪生 3D 风电场,智慧风电之陆上风电

    前言 "十四五"期间,在传统产业数字化升级和绿色改造领域.绿色低碳城镇化和现代城市建设领域.绿色低碳消费领域,和可再生能源或电力系统建设等领域,总投资可以达到近 45 万亿,平均每 ...

  6. 【有奖体验】叮!你有一张 3D 卡通头像请查收

    立即体验基于函数计算部署[图生图]一键部署3D卡通风格模型: https://developer.aliyun.com/topic/aigc_fc 人工智能生成内容(Artificial Intell ...

  7. Xmanager连接linux服务器的桌面

    在办公室使用xshell通过22端口访问linux服务器大家都很熟悉,但有的时候在办公室要远程linux服务器上的桌面应用,该如何实现. 环境准备 客户端:win10 服务器:centos7.9 一. ...

  8. 一次完整的HTTP服务过程

  9. 核心技能之UI库选择

    移动端推荐: vant.cube-ui 有赞vant: https://youzan.github.io/vant/#/zh-CN/ 滴滴cube-ui: https://didi.github.io ...

  10. 每天学五分钟 Liunx 101 | 存储篇:LVM

    LVM LVM(Logical Volume Manager),逻辑卷管理器.一种高级文件系统管理方式,它可以动态扩展文件系统.   LVM 的示意图如下所示: