Linux骚操作之第二十九话免交互

文章目录

  • 前言
  • 一、Here Document
  • 二、Expect
  • 总结

前言

免交互分为两种Here document 和expect。首先HereDocument是帮助shell脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。节省大量的时间且提高效率,expect是建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。

一、Here Document

  1. 使用O/I重定向的方式将命令列表提供给交互式程序
  2. 标准输入的一种替代品
  3. 语法格式
    Linux骚操作之第二十九话免交互_第1张图片
  4. 案例
    4.1、案例1
    Linux骚操作之第二十九话免交互_第2张图片
    4.2、案例2 将内容输入到指定文件
    Linux骚操作之第二十九话免交互_第3张图片
    4.3、案例3给a赋值
    Linux骚操作之第二十九话免交互_第4张图片Linux骚操作之第二十九话免交互_第5张图片
    4.4、在EOF中引用变量变成普通字符
    Linux骚操作之第二十九话免交互_第6张图片
    4.5、给用户添加密码
    Linux骚操作之第二十九话免交互_第7张图片
    4.6、顺序颠倒案例
    Linux骚操作之第二十九话免交互_第8张图片
    4.7、故障案例
    Linux骚操作之第二十九话免交互_第9张图片
    Linux骚操作之第二十九话免交互_第10张图片
    4.8、tee案例
    Linux骚操作之第二十九话免交互_第11张图片
    4.9、使用脚本输出内容
    Linux骚操作之第二十九话免交互_第12张图片
    Linux骚操作之第二十九话免交互_第13张图片
    4.10、脚本输出括号故障案例
    Linux骚操作之第二十九话免交互_第14张图片
    在这里插入图片描述
    4.11、本地源案例
    Linux骚操作之第二十九话免交互_第15张图片
    4.12、去掉每行之前的TAB字符案例

Linux骚操作之第二十九话免交互_第16张图片
在这里插入图片描述
4.13、多行注释
Linux骚操作之第二十九话免交互_第17张图片
在这里插入图片描述

二、Expect

  1. 建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题
  2. xpect的安装:它是一个程序,所以需要安装
    Rpm -q expect
    Rpm -q tcl
    Yum install -y expect tclLinux骚操作之第二十九话免交互_第18张图片
  3. 基本命令

3.1、脚本编辑器:#!/usr/bin/expect

3.2、spawn
spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息。

3.3、expect
判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回;只能捕捉由spawn启动的进程的输出;用于接收命令执行后的输出,然后和期望的字符串匹配

3.4、send
向进程发送字符串,用于模拟用户的输入;该命令不能自动回车换行,一般要加\r(回车)或者\n

3.5、结束符expect eof
表示交互结束,等待执行结束,退回到原用户,与spawn对应。(与interact二选一)

3.6、interact
执行完成后保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,这个时候就可以手工操作了,interact后的命令不起作用,比如interact后添加exit,并不会退出root用户。而如果没有interact则登录完成后会退出,而不是留在远程终端上。

3.7、set
expect 默认的超时时间是10秒,通过 set 命令可以设置会话超时时间,若不限制超时时间则应设置为-1。

3.8、exp_continue
exp_continue 附加于某个expect判断项之后,可以使该项被匹配后,还能继续匹配该expect-判断语句内的其他项。exp_continue类似于控制语句中的 continue 语句。表示允许expect继续向下执行指令。

  1. 案例

4.1、ssh远程登陆案例
Linux骚操作之第二十九话免交互_第19张图片
Linux骚操作之第二十九话免交互_第20张图片

4.2、位置变量
Linux骚操作之第二十九话免交互_第21张图片
Linux骚操作之第二十九话免交互_第22张图片
4.3、控制台输入用户名自动填充密码
Linux骚操作之第二十九话免交互_第23张图片

Linux骚操作之第二十九话免交互_第24张图片

总结

在使用免交互的过程中,我们学到如果使用Here document,则可以帮助运维工程师减少使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入,当然,在使用EOF过程中,可以指定文件将内容输入,或者使用脚本的形式自动化的调用。在使用expect过程中,我们一般使用的解释器是/usr/bin/expect,spawn是跟踪后续交互信息,开启会话,expect含有多重判断的含义,send向进程发送字符串,用于模拟用户的输入,该命令不能回车换行,一般采取行后加\r或者\n。结束符号expect eof或者interact二选一即可。

你可能感兴趣的:(linux,免交互,linux,运维)