《Centos系统——Expect自动化交互式程序应用》

1. 了解expect简介与应用场景

  1. EXPECT是一个用来实现自动交互功能的软件套件(EXPECT is a software suite for automating interactive tools),用于提供自动交互的工具。

  2. 设想一个场景:比如你要用ssh或者 telnet登录服务器的时候,命令行下提示需要输入用户和密码等。如果叫你用shell脚本写自动登录脚本的话是不是有点困难呢? 你会说在shell中执行ssh命令的话,他会一直停在那里等你密码啊,这个要手工来做才行吧?

  3. Expect就是为处理这类情况而设计的工具,简单来说它可以控制、处理输入,输出流,然后提供自动填写数据等需要用户交互式输入的数据的地方实现自动化处理。Expect就是为了处理“自动交互”的工具。

  4. Expect 支持自定义的脚本,所以你通过编写自定义脚本就可以实现你想要的自动填写数据功能了

2. 安装ecpect

安装expect:
Centos系统: yum install expect -y
或
Ubuntu系统: apt-get install expect -y

3. expect的工作流程

expect的工作流程可以理解为:

spawn启动进程---->expect期待关键字---->send向进进程发送字符—>退出结束。

4. 基本的expect命令

spawn : 启动新进程,用于执行shell命令;

expect : 从发起交互的命令的进程接受字符串,用于匹配我们预想的字符串;

send : 用于向发起交互的命令的进程发送字符串;

interact: 允许用户交互,即此命令后,交互将不会由expect进行,将交回给用户;
如果没有这一句登录完成后会退出,而不是留在远程终端上。

5. 掌握except语法

a)spawn

spawn命令是expect的初始命令,它用于启动一个进程,之后所有expect操作都在这个进程中进行,如果没有spawn语句,整个expect就无法执行了,spawn使用方法如下:
spawn ssh root@192.168.2.5
// 在spawn命令后面,直接加上要启动的进程、命令等信息

b)expect

expect 表达式 动作 表达式 动作。。。。。。。
expect 命令用于等候一个相匹配内容的输出,一旦匹配上就执行expect后面的动作或命令,如
在这里插入图片描述

从上面的例子可以看出。expect是依附与spawn命令的,当执行ssh命令后,expect就匹配命令执行后的关键字: password:,如果匹配到关键字就会执行后面包含在{}括号中的exp_send动作,匹配以及动作可以放在二行,这样就不需要使用{}括号了,就像下面这样,实际完成的功能与上面是一样的
在这里插入图片描述

这里的\r代表回车,也可以使用\n,记得加上\r或\n,否则脚本将可能会卡死。

c)exp_send和send

exp_send命令或send命令是expect中的动作命令,使用方法如下:
在这里插入图片描述

d)timeout

timeout 是expect中的一个重要变量,它是一个全局的时间控制开关,你可以通过为这个变量赋值来规定整个expectc操作的时间,注意这个变量是服务与expect全局的,它不会纠缠某一条命令,即使命令没有任何错误,到时间依然会激活这个变量。使用方法如下
在这里插入图片描述

timeout 变量中,设置为0表示立即超时,-1则表示永久不超时。

e)expect eof

与spawn对应表示捕获终端输出信息终止

6、expect执行命令

expect用的不是bash所以会报错。执行的时候直接./autosu.sh就可以了
或者
expect -f xxx.sh

7. 案例

先安装expect工具

yum -y install expect

1. 案例一

在这里插入图片描述

2. 小案例二

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值