Linux通过expect实现免交互

免交互

Here Document

用于将多行字符串直接传递给命令的方式,不需要人为交互命令界面,实现免交互

当使用Here Document操作文件时,需要借助一个文件结束符

EOF:文件结束符

示例

在脚本文件中写入以下内容

<<:输入

>>:输出

  1. :表示开始一个 Here Document。
  2. >> /etc/hosts:这部分将 Here Document 的内容追加到/etc/hosts文件中。如果改为>/etc/hosts,就是覆盖指定文件
  3. EOF:在 Here Document 的结尾,表示输入的结束。结尾的结束符两侧不能有空格

执行该脚本就可以看到指定文件的内容末尾被追加了写入的文本

结束符

当修改了结束符为任意文本再执行脚本还会正常执行吗?

因为Here Document的结束标识符并不是关键字,而是用户定义的字符串。Shell 会在遇到 标识符 的语法时,寻找以 标识符 开始的行,作为 Here Document 的结束。

在Here Document中,结束符也是可以嵌套的比如下图,用两种名称不同的结束符更清晰的区分了执行命令的区域。

其他示例

wc -l

手动输入条目,让wc -l统计数量

read

通过read命令给变量赋值

调用变量交互

提前声明变量,变量a是文件的绝对路径,在cat后重定向覆盖到变量a的文件

在重定向覆盖的内容中调用变量b

在变量中直接交互

声明一个字符串变量a

在变量b中直接使用$()编写命令

最后使用echo调用变量

批量多行注释

比如在脚本中要注释第3行道第6行

加入 :<<EOF 再使用 EOF 结束

最后输出的结果就会和注释一样

TCL语言和expect工具

Tool Command Language(工具命令语言)和Here Document一样是一种实现免交互的方式

要通过TCL语言实现免交互,需要expect这个工具,expect是一个基于TCL的自动化工具。

可以把expect当成bash解释器,bash解释器解析的是系统的指令,expect解析的则是expect对应的指令,比如expect、send、spawn、expect eof、interact这些命令

命令

说明

expect

判断,输出的内容是否包含指定字符串

send

发送字符串

spawn

开启一个会话

interact

结束

和expect eof不能同时使用

结束交互后,停留在交互的结果

expect eof

结束

结束后,回到本地主机

set

定义变量

exp_continue

用于在 Expect 脚本中控制流程的继续执行

指示 Expect 继续等待下一个匹配模式而不是立即跳出当前的 expect 块

expect示例

登录目标主机

要通过expect实现免交互需要安装对应软件包

新建test.sh脚本添加如下内容

声明执行该脚本的解释器为expect,此时就不能直接使用原来的通过bash解析的系统命令了,就要根据expect来编写命令

使用interact退出就会在执行完指定命令后停留在执行后的状态(停留在登录的主机)

为该脚本添加执行权限,然后执行该脚本

直接在相对路径下使用./test.sh执行或使用expect /root/test.sh执行脚本

如果将退出语句改为expect eof 就会在执行完命令后退出登录的主机

在bash脚本内使用expect

在声明过bash解释器的脚本中想要实现免交互时,需要使用expect配合EOF结束符

需要注意的是,在Xshell中交互弹出的消息都是中文的,所以这里要进入到虚拟机终端里去测试命令,然后查看该命令弹出的消息

添加执行权,执行该脚本并给予位置参数的值

需要注意的是,在此时通过脚本实现免交互时,到输入密码这种交互操作会卡顿,等待几秒就会自动交互

如果要修改等待的时间,要加入timeout参数,指定时间,单位为秒

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

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

相关文章

AFLNet入门教学——测试RTSP协议实现Live555(Ubuntu)

1、简介 本文旨在使用AFLNet对RTSP协议实现Live555进行模糊测试。实验环境为&#xff1a;Ubuntu22.04.4AFLNet安装参考&#xff1a;AFLNet入门教学——安装&#xff08;Ubuntu22.04.4&#xff09;-CSDN博客 2、安装Live555 本次实验采取的是live555在2018年8月28日上传的版本…

nacos漏洞汇总

1 nacos介绍 1.1 nacos是啥 Alibaba Nacos是阿里巴巴推出来的一个新开源项目&#xff0c;是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;可以快速实现动态服务发现、服…

【Knowledge Graph Context-Enhanced Diversified Recommendation(MSDM2024)】

Knowledge Graph Context-Enhanced Diversified Recommendation 摘要 推荐系统&#xff08;RecSys&#xff09;领域已被广泛研究&#xff0c;以通过利用用户的历史交互来提高准确性。 尽管如此&#xff0c;这种对准确性的持续追求常常导致多样性的减少&#xff0c;最终导致众所…

全网最强MyBatisPlus教程 | 万字长文爆肝MyBatisPlus

MyBatisPlus 今日目标 基于MyBatisPlus完成标准Dao的增删改查功能 掌握MyBatisPlus中的分页及条件查询构建 掌握主键ID的生成策略 了解MyBatisPlus的代码生成器 1&#xff0c;MyBatisPlus入门案例与简介 这一节我们来学习下MyBatisPlus的入门案例与简介&#xff0c;这个和其他…

在线AI聊天对话机器人,答你所问!

随着AI人工智能技术的不断进步&#xff0c;AI聊天对话机器人已经成为我们日常生活中常用的工具。这些智能助手不仅能够提供信息查询、生活娱乐、学习辅导等服务&#xff0c;还能通过自然语言处理和机器学习技术理解用户的需求&#xff0c;提供个性化的回答和建议。下面小编就和…

选择第三方软件测试机构做验收测试的好处简析

企事业单位在自行开发完软件系统或委托软件开发公司生产软件之后&#xff0c;有一个必经流程就是验收测试&#xff0c;以验证该产品是否符合用户需求、是否可以上线。为了客观评估所委托生产的软件质量&#xff0c;第三方软件测试机构往往成为企事业单位做验收测试的首选&#…

如何有效降低云消息使用成本?涂鸦Pulsar云消息史诗级大更新来了!超级干货攻略快收藏

月末了&#xff0c;相信大家都会有信用卡额度超支的担忧&#xff0c;生怕一不留神就会超出预算&#xff0c;并且事后还需要仔细核对消费情况。类似的焦虑&#xff0c;也会出现在使用涂鸦 Pulsar 云消息服务时。虽然涂鸦 Pulsar 云消息能满足开发者对设备各类事件实时性和持久化…

ADI-DSP|在指定内存写入数据

一、LDF文件设置内存空间 user_data_test { TYPE(BW RAM) START(0x00380010) END(0x0039bfff) WIDTH(8) }//usr data dxe_user_data_bw BW{INPUT_SECTION_ALIGN(4)INPUT_SECTIONS( $OBJS_LIBS(user_data) )} > user_data_test 二、在C文件中设置数据 /************…

使用LabVIEW和示波器测试IGBT参数

使用LabVIEW和示波器测试绝缘栅双极型晶体管&#xff08;IGBT&#xff09;参数的综合解决方案。过程包括硬件设置、示波器和其他必要设备的配置&#xff0c;以及开发LabVIEW程序以自动化数据采集、过滤、关键参数计算和结果显示。该方法确保了IGBT测试的准确性、可靠性和高效性…

巡检机器人智能联网,促进工厂自动化

随着工业4.0和智能制造的快速发展&#xff0c;企业引入自动化设备和智能机器人以提高生产效率和降低人工成本已成为大势所趋。其中&#xff0c;巡检机器人作为一种能够在复杂和危险环境中进行自动巡检的设备&#xff0c;受到了广泛关注。如何实现巡检机器人稳定、安全的联网是每…

【光伏开发】工商业光伏的优势

随着全球对可再生能源的日益重视和环保意识的增强&#xff0c;工商业光伏作为一种清洁、高效的能源利用方式&#xff0c;正在得到广泛的推广和应用。工商业光伏系统通过安装在工厂、仓库、办公楼等工商业场所的太阳能电池板&#xff0c;将太阳能转化为电能&#xff0c;以满足工…

C# OpenCvSharp 入门

摘要 C# OpenCvSharp 是一个基于OpenCV&#xff08;开源计算机视觉库&#xff09;的C#封装库&#xff0c;它提供了一组功能强大的工具和函数&#xff0c;用于图像处理、计算机视觉和计算机图形学等领域。通过使用OpenCvSharp库&#xff0c;您可以在C#应用程序中轻松地实现各种图…

SpringBoot整合Nacos并开启鉴权

关于Nacos的介绍就不在多说&#xff0c;不知道的可以看看Nacos的官网&#xff1a;nacos.io    1、下载安装Nacos 下载地址&#xff1a;https://nacos.io/download/nacos-server/&#xff0c;下载后将Nacos解压到本地磁盘即可&#xff0c;Nacos使用Java语言开发&#xff0c;因…

Ant Design Vue Upload 自定义上传 customRequest,这一篇很详细

Upload 常用属性和方法 示例上传接口 # 接口文档 url https://www.mocky.io/api/main/upload 头部 x-token: xxx 参数 file: File // 上传的文件 flag: xxx // 上传的标识// 文件上传 api 函数简单封装 export const uploadApi ({ file }) > {const formData new Fo…

Markdown的使用

这里写自定义目录标题 欢迎使用Markdown新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注…

iOS之如何创建.framework静态库

番外&#xff1a;想要查看如何创建.a静态库可前往看我iOS之如何创建.a静态库-CSDN博客这篇文章。 一、创建framework项目 创建framework工程要选择iOS --> Cocoa Touch Framework输入项目名称PrintFramework也是编译生成的framework的名称。framework的名称也可以以后在项目…

CID引流电商:传统电商破局的新动力

摘要&#xff1a;CID引流电商为传统电商带来破局新机遇&#xff0c;通过跨平台引流、精准定位和高效转化&#xff0c;解决了流量获取难、成本高的问题&#xff0c;提升了销售业绩和市场竞争力。CID引流电商助力传统电商在激烈竞争中保持领先&#xff0c;推动行业持续发展。 随…

WEB攻防【5】——JS项目/Node.js框架安全/识别审计/验证绕过

1、test.php和test.html对比 #知识点&#xff1a; 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 #详细点: 1、什么是Js渗透测试? 在Javascript中也存在变量和函数&#xff0c;当存在可控变量及函数调用即可参数漏洞 JS开发的WEB应用和PHP、java.NET…

学习笔记——动态路由——RIP(RIP路由汇总介绍)

四、RIP路由汇总介绍 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。 路由汇总的原理是&#xff0c;同一个自然网段内的不同子网的路由在向外…

recogito-js:用于文本注释/图像注释的前端插件

创建批注&#xff1a; 继续批注&#xff1a; 右侧批注列表&#xff1a; 1、功能与应用&#xff1a; 文本注释&#xff1a;recogito-js可以将注释功能添加到网页上&#xff0c;或者作为构建完全自定义注释应用程序的工具箱。图像注释&#xff1a;除了文本注释外&#xff0c;它还…