免交互的使用

news2024/11/24 13:39:32

免交互的使用

  • 一、免交互
  • 二、小实验
  • 三、利用脚本完成的小实验
  • 三、Expect

一、免交互

Here Document 免交互
使用I/O重定向的方式将命令列表提供给交互式程序或命令,比如ftp、cat或者read命令。
免交互时标准输入的一种替代品可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件“文件”并用作“命令”的标准输入。Here Dociment也可以与非交互式程序和命令一起使用。

语法格式:
命令 <<标记

内容

标记

#标记直接是传入的内容

注意事项:

  • 标记可以使用任意合法字符(统称为EOF)
  • 结尾的标记一定要顶格写,前面不能有如何字符
  • 结尾的标记后面也不能有如何字符(包括空格)
  • 开头标记前后的空格都会被省略掉

二、小实验

  • 免交互方式实现对行数的统计,将要统计的内容置于标记“EOF”之间,直接将内容传给wc -l来统计。
    在这里插入图片描述
  • 通过read命令接受输入并打印,输入值是两个EOF标记之间的部分,作为变量i的值
    在这里插入图片描述
  • 通过passwd给用户设置密码
    在这里插入图片描述

三、利用脚本完成的小实验

  • 支持变量替换
    在写入文件时会先将变量替换称实际值,再结合cat命令完成写入
    在这里插入图片描述
    在这里插入图片描述
  • 关闭变量替换功能,按照字符原本的样子输出,不做任何修改或替换
    在这里插入图片描述
    在这里插入图片描述
  • 去掉每行之前的tab字符(制表符)
    在这里插入图片描述在这里插入图片描述可以看到前面是依然有制表符存在的
    在这里插入图片描述
    在这里插入图片描述
  • 多行注释
    Bash的默认注释是“#”,该注释方法值支持单行注释;Here Document的引入解决了多行注释的问题。
    “:”代表什么都不做的空命令,中间标记区域的内容不会被执行,会被bash忽略掉,因此可达到批量注释的效果
    在这里插入图片描述
    在这里插入图片描述

三、Expect

Expect建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。
需要先安装expect程序
在这里插入图片描述
基本命令:

  • 脚本解释器
    expect脚本中首先引入文件,表面使用的是哪儿一个shell。
    #!/usr/bin/expect

  • spawn
    spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息
    例:spawn passwd root(跟踪passwd root命令)

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

  • send
    向进程发送字符串,用于模拟用户的输入;该命令不能自动回车换行,一般要加\r(回车)或者\n(换行)
    例:
    方式一:
    expect “密码” {send “abc123\r”} 注意:同一行send部分都要有{}
    方式二:
    expect“密码”
    send “abc123\r” 注意:换行send部分不需要有{}
    方式三:
    expect支持多个分支
    expect
    {
    “密码” {send “abc123\r”}
    “密码” {send “123123\r”}
    “密码” {send “abcabc\r”}
    }
    注意:只要匹配了其中一个情况,执行相应的send语句后退出该expect语句

  • 结束符

  • expect eof
    表示交互结束,等待执行结束,退回到原用户,与spawn对应
    比如切换到root用户,expect脚本默认的是等待10s,当执行完命令后,默认停留10s后,自动切回了原用户
    interact:
    执行完成后保持交互状态,把控制权交给控制台,会停留在目标终端而不会退回原终端,这个时候就可以手工操作了,interact后的命令不起作用,比如interact后添加exit,并不会退出root用户。而如果没有interact则登录完成后会退出,而不是留在远程终端上。
    使用interact会保持在终端而不会退回到原终端,比如切换到root用户,会一直在root用户状态下;比如ssh到另一台服务器,会一直在目标服务器终端,而不会切回到原服务器。
    注意:expect eof与interact只能二选一。

  • set
    expect默认的时间是10秒,通过set命令可以设置会话超时时间,若不限制超过时间则应设置为-1.
    例:
    set timeout 30

  • exp_continue
    ecp_continue附加于某个expect判断项之后,可以使该项被匹配后,还能继续匹配该expect判断语句内的其他项。exp_continue类似于控制语句中的continue语句。表示允许expect继续向下执行指令。
    例如:
    将判断交互输出中是否存在yes/no或者password。如果匹配yes/no则输出yes并再次执行判断;如果匹配password则输出abc123并结束该段expect语句。
    不设置的情况下是:
    在这里插入图片描述
    编写脚本:
    在这里插入图片描述
    expect命令只会进入,无法进行命令操作,默认是十秒之后退出,若想要在另一台主机上进行操作,需要将exoect eof改成interact
    在这里插入图片描述
    在这里插入图片描述
    expect直接执行,需要使用 expect 命令去执行脚本
    su切换用户
    #!/usr/bin/expect
    #设置超时时间
    set timeout 5
    #参数传入
    set username [lindex $argv 0]
    set password [lindex $argv 1]
    #开始追踪命令
    spawn su KaTeX parse error: Expected 'EOF', got '#' at position 10: username #̲免交互执行,捕捉信息并匹配 e…password\r"
    expect “*]#”
    send_user “ok”
    #把控制权交给控制台
    interact
    #expect eof

嵌入执行模式,将expect过程融入shell当中,方便执行和处理。像ssh、su这种会切换环境的交互式命令一般不建议使用嵌入执行模式。
创建用户并设置密码
在这里插入图片描述
在这里插入图片描述

实现ssh自动登录
在这里插入图片描述
在interact后面加命令是无法生效的,不起任何作用
在这里插入图片描述

使用expect实现fdisk /dev/sdb 免交互创建分区,要求一次性创建一个的普通分区和一个的swap分区和一个逻辑分区
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL查询练习题

一&#xff0e;编程题 有三张表&#xff0c;结构如下&#xff1a; Student(学号StuId,姓名StuName,性别StuSex,出生年月StuBirth) Course(课程号CouId,课程名CouName,授课教师CoouTeacher) SC(学号StuId,课程号CouId,成绩Score,授课教师CouTeacher) 用标准SQL语句完成下列操作…

第六章 介绍Productions - 其他Production 选项

文章目录 第六章 介绍Productions - 其他Production 选项用户门户工作流业务活动监控Alerts发布和订阅消息传递Message Bank 第六章 介绍Productions - 其他Production 选项 本章概述了与制作相关的其他选项。 用户门户 与 Studio 和管理门户等后端工具不同&#xff0c;用户…

免交互 (Here Document)

目录 免交互 (Here Document) 语法格式&#xff1a; 注意事项&#xff1a; 支持变量替换 多行注释 Expect 基本命令: interact 嵌入执行模式 实现 ssh 自动登录 免交互 (Here Document) 使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、c…

阿里云异构计算云服务器GPU、FPGA和EAIS详解

阿里云阿里云异构计算主要包括GPU云服务器、FPGA云服务器和弹性加速计算实例EAIS&#xff0c;随着人工智能技术的发展&#xff0c;越来越多的AI计算都采用异构计算来实现性能加速&#xff0c;阿里云异构计算云服务研发了云端AI加速器&#xff0c;通过统一的框架同时支持了Tenso…

量化数据运算

量化数据运算 文章目录 量化数据运算量化数据乘积仿射映射量化的矩阵运算矩阵表示 矩阵CAB量化方式表示 矩阵CAB 代码展示基于仿射映射量化的矩阵乘法矩阵乘法计算API通过仿射映射量化形式计算两个矩阵的乘法**欢迎关注公众号【三戒纪元】** 量化数据乘积 使用记号&#xff08…

【Java代码审计】XSS漏洞产生原理及其修复

XSS漏洞代码审计 前言XSS漏洞原理1、反射型XSS反射型XSS漏洞审计 2、存储型XSS存储型XSS审计 漏洞修复 前言 笔者已经很长时间没有写过笔记力&#xff0c;经过一年的摸爬滚打也算是走到了代码审计这一关&#xff0c;这些日子也还在为项目和hw周旋&#xff0c;上周终于面试完&a…

今年是很惨,但有人怒砍一大把Offer...

300万字&#xff01;全网最全大数据学习面试社区等你来&#xff01; 今天的主人公是一个应届生&#xff0c;同时也是我在训练营辅导的一名同学&#xff0c;在整体经济下行&#xff0c;互联网见顶的情况拿到包括腾讯、蚂蚁、B站等多家互联网大厂Offer。 下面是我站在求职者角度提…

DDL语句DQL语句

SQL学习笔记 DDL语句--操作数据表 /* 快捷键: insert键 在插入 和 替换模式之间切换 ctrl 字母z 撤销上一步操作 tab 往后缩进(默认4个空格) shift tab 往前缩进(默认4个空格) …

基于Java+SpringBoot+Vue学生信息管理设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

重磅发布:《AI产品经理的实操手册(2023版)》

今天是咱们社群“AI产品经理大本营”六周年活动的最后一天&#xff0c;正式发布这份大家和我都非常期待的重磅干货——《AI产品经理的实操手册&#xff08;2023版&#xff09;》 上周发布的“AI季度资料包&#xff08;2023Q2&#xff09;”&#xff0c;适合对AI初步感兴趣的产品…

《统计学习方法》——隐马尔可夫模型(中)

概率计算算法 直接计算法 给定模型 λ ( A , B , π ) \lambda(A,B,\pi) λ(A,B,π)和观测序列 O ( o 1 , o 2 , ⋯ , o T ) O(o_1,o_2,\cdots,o_T) O(o1​,o2​,⋯,oT​)&#xff0c;计算观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。最直接的方法就是…

『python爬虫』23. selenium之窗口切换与iframe(保姆级图文)

目录 1. 窗口切换2. 抓取拉勾网职务信息2.1 拉勾网查看职务详情与价格2.2 完整代码 3. iframe的处理总结 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 欢迎关注 『python爬虫』 专栏&#xff0c;持续更新中 1. 窗口切换 窗口句柄的定义&#xff1a;WebDriver对象有wi…

肝一肝设计模式【八】-- 外观模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 肝一肝设计模式【五】-- 适配器模式 传送门 肝一肝设计模式【六】-- 装饰器模式 传送门 肝…

Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

作者&#xff1a;Baha Azarmi 你可能已经阅读过这篇关于我们将 Elasticsearch 的相关性功能与 OpenAI 问答功能相结合的博文。 该帖子的主要思想是说明如何将 Elastic 与 OpenAI 的 GPT 模型结合使用来构建响应并向用户返回上下文相关的内容。 我们构建的应用程序可以公开一个…

好久不见,甚是想念

大家好&#xff0c;我是程序员小哈。 一晃停更好久了&#xff0c;之前因为12月份阳了&#xff0c;身体一直感觉没有完全恢复&#xff0c;就一直偷懒了&#xff0c;外加单位的事情比较多&#xff0c;实在是分身乏术&#xff0c;最近总算是告一段落了&#xff0c;咱们的知识分享…

shell脚本——流编辑器“三剑客”之sed命令

shell脚本——流编辑器“三剑客”之sed命令 一、流编辑器“三剑客”二、sed编辑器1、sed的工作流程2、命令格式3、常用选项4、常用操作5、打印内容6、使用地址7、删除行8、替换9、插入 一、流编辑器“三剑客” sed awk grep 二、sed编辑器 sed是一种流编辑器&#xff0c;流编…

手把手项目实战,搞完,直接写在简历上!

大家好&#xff0c;我是田哥 很多没有项目经验&#xff0c;或者没有亮点项目的朋友可以看过来。 最近田哥在搞一个项目&#xff1a;充电桩项目。本文给大家介绍这个项目背景、部分原型图、核心功能、核心模块、技术栈等。 项目背景介绍 随着我国汽车行业的不断发展&#xff0c…

AI绘画-Midjourney基础1-基本操作

Midjourney是一款 AI 绘画工具&#xff0c;可以根据你的提示&#xff08;本文中称为 prompt&#xff09;创作出各种图像。你只需要在Discord上和一个机器人聊天&#xff0c;就可以用简单的命令来控制它。目前已不支持免费试用&#xff0c;可以选择付费计划来获得更多功能和优势…

Ae 效果详解:Roto 笔刷和调整边缘

使用 Roto 笔刷工具或调整边缘工具之后&#xff0c;Ae 会向图层应用“Roto 笔刷和调整边缘” Roto Brush & Refine Edge效果。 版本 Version 目前包括 1.0&#xff08;经典&#xff09;1.0 Classic和 2.0 两个版本。 品质 Quality 选择围绕边缘的细节质量。 --标准 Stan…