Linux运维实例 利用here document和expact来进行免交互运维操作

前言

在运维过程中,会出现许多交互界面,例如创建用户和修改密码 利用expect来进行操作就可以免去一些不需要的交互

一、here document的概念和使用

概念

here document是采用I/O重定向的方式将命令列表提供给交互式程序或命令,比如ftp cat 或 read命令。
是标准输入的一种代替品 可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接在系统中生成一个文件并用作命令的标准输入。here Document 也可以与非交互式程序和命令使用。

命令格式

命令 <<标记
内容 #标记之间是传入内容
标记
标记通常为EOF
结尾的标记一定要顶格写,前后不能有任何字符(包括空格)
开头标记前后的空格会被省略掉。

实际操作效果

在这里插入图片描述
在这里插入图片描述
将内容直接写入文件
在这里插入图片描述
统计行数
通过read命令接受输入并打印,输入值是两个EOF标记之间的部分,作为变量aoao的值
在这里插入图片描述
还可以对用户设置密码 免交互进行
在这里插入图片描述
在shell脚本中写入文件会先将变量替换成实际值,在结合cat命令去写入
在这里插入图片描述
文件已经生成
在这里插入图片描述
查看变量已经替换
在这里插入图片描述
同样也可以整体赋值给变量,再通过echo命令将变量打印出来
在这里插入图片描述
在这里插入图片描述
变量替换也可以关闭 按照原来的字段输出
在这里插入图片描述
结果
在这里插入图片描述

多行注释

bash脚本中默认的注释号为#号,整个注释符号只可以单行注释;here document可以经行多行注释
" "表示空命令。被标记的区域的内容不会被执行,可以达到批量注释的结果
以下被注释
在这里插入图片描述
只输出上面的mw
在这里插入图片描述

二、expect免交互工具

1 概念

expect是建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题
需要安装软件包 这里选择yum安装

在这里插入图片描述

2 基本格式

1 脚本解释器
expect脚本中首先引入文件,表明使用的是那个shell。
默认为#!/usr/bin/expect
2 spawn
spawn后面通常跟一个Linux执行命令,表示开启一个会话 启动进程 ,并跟踪后续交互信息。
spawn useradd root
3 expect
判断上次输出的结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回:
只能捕捉由spawn启动的进程的输出:
用于接收命令执行后的输出,然后和期望的字符串匹配
4 send
向进程发送字符串,用于模拟用户的输入:该命令不能自动回车换行,一般要加\r(回车)或者\n
方式有三种:
1 expect “密码” {send “密码/r”} 同一行send部分要有{}
2 expect “密码”
send “$密码\r” 换行send部分不需要有{}
3 expect 支持多个分支 只要匹配了其中一个情况,执行相应的send语句后退出该expect语句
expect
{
“密码1” {send “密码\r”}
“密码2” {send"密码"\r}
“密码3” {send"密码"\r}
5结束符
expect eof
表示交互结束,等待执行结束,退回到原用户,与spawn对应。
比如切换到root用户,expect默认是等待10s,当执行完命后,默认停留10s后,自动切回了原用户
interact
执行完后会保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,可以经行下一步操作,interact后面的字符也不会生效。
expect和interact只可以2选一。

3 执行脚本

利用脚本来执行切换用户免交互
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值