Linux的expect工具完成命令行参数传递及可执行文件注入shell脚本

a.out每次只能得出一个结果,且需要根据提示,手动输入不同的参数。a.out的操作如下:

$ ./a.out
Input client IP address string:
1.1.1.105
Input server IP address string:
1.1.1.1
Input worker number:
4
worker id: 5

因此想到使用shell脚本自动输入参数:

#!/bin/bashserver_ip="1.1.1.105"
client_ip="1.1.1.1"
worker_num="4"gcc ./echo.c -o a.out# option 1
#echo -e "$client_ip\n$server_ip\n$worker_num\n" | ./a.out# option 2
#for ((i=2;i<200;i++))
#do
#    client_ip="1.1.1.$i"
#    echo "client_ip=$client_ip"
#    echo -e "$client_ip\n$server_ip\n$worker_num\n" | ./a.out
#done# option 3
# sudo apt-get install tcl tk expect
for ((i=2;i<240;i++))
doclient_ip="1.1.1.$i"expect<<__EOF__set timeout 10spawn -noecho ./a.outexpect "Input client IP address string:"send "$client_ip\n"expect "Input server IP address string:"send "$server_ip\n"expect "Input worker number:"send "$worker_num\n"expect off
__EOF__
done

注:__EOF__需要顶头编写。

把a.out嵌入到shell脚本中。

#!/bin/sh#追加在shell脚本末尾中的文件可以是可执行文件或者tar压缩包等
file_name="./a.out"#使用sed命令把文件内容从shell脚本解析到file_name中,$0是本脚本的名字 $1是传递给本脚本的第一个参数
#sed命令参数说明
# 1,/Alex/ 匹配第一行到有Alex的行
# d 删除指定行
sed "1,/^###END OF THE SCRIPT###/d" "$0" > ${file_name}# sed解析完之后,对该文件进行其它自定义的操作
chmod u+x ${file_name}# shell脚本需要执行的内容
server_ip="1.1.1.105"
client_ip="1.1.1.1"
worker_num="4"# sudo apt-get install tcl tk expect
for ((i=2;i<240;i++))
doclient_ip="1.1.1.$i"expect<<__EOF__set timeout 10spawn -noecho ./a.outexpect "Input client IP address string:"send "$client_ip\n"expect "Input server IP address string:"send "$server_ip\n"expect "Input worker number:"send "$worker_num\n"expect off
__EOF__
done
rm -f ${file_name}exit 0
###END OF THE SCRIPT###
^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^C^@>^@^A^@^@^@°...

注:
1 ###END OF THE SCRIPT### 这一行之后的内容是使用 cat file_name >> test.sh 命令追加到脚本中的。

2 先写好脚本,再使用 cat file_name >> test.sh 脚本中,不能先把文件追加到脚本,再进行修改,file_name可以是任意的文件

3 sed工作原理:sed工作的过程是先从文件中读取一行内容到模式空间里即sed专属的缓存空间,然后判断这行内容是否是需要处理的内容,如果不是就继续从文件中读取下一行,否则对改行内容进行相应处理后输出,然后继续读取下一行进行判断或处理,直到文件最后一行处理完毕整个过程结束。

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

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

相关文章

主流开发语言和开发环境介绍

主流开发语言和开发环境介绍文章目录 ⭐️ 主流开发语言&#xff1a;2024年2月编程语言排行榜&#xff08;TIOBE前十&#xff09;⭐️ 主流开发语言开发环境介绍1.Python2.C3.C4.Java5.C#6.JavaScript7.SQL8.GO9.Visual Basic10.PHP ⭐️ 主流开发语言&#xff1a;2024年2月编程…

C语言二级易忘易错易混知识点(自用)

1.数组名不能自加。 因为数组名实际上是一个指针&#xff0c;指向数组的第一个元素的地址。数组名在编译器中被视为常量&#xff0c;它的值是固定的&#xff0c;不能改变。 要访问数组的不同元素&#xff0c;应该使用数组名加上偏移量的方式来访问。 2.共用体只有最后一次赋值…

相机图像质量研究(30)常见问题总结:图像处理对成像的影响--重影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

【Unity】管道流动模拟Shader

【Unity】管道流动模拟Shader 抽象模拟管道介质流动的效果&#xff0c;使用顶点片元着色器。可以调整管线光泽&#xff0c;颜色&#xff0c;流动方向&#xff0c;透明度&#xff0c;流动体粗细&#xff0c;流动速度和横断面。 实现效果 Demo效果 Demo下载地址 管线光泽调整 …

LabVIEW声速测定实验数据处理

LabVIEW声速测定实验数据处理 介绍了一个基于LabVIEW的声速测定实验数据处理系统的应用。该系统利用LabVIEW的强大数据处理和分析能力&#xff0c;通过设计友好的用户界面和高效的算法&#xff0c;有效提高了声速测定实验的数据处理效率和准确性。通过这个案例&#xff0c;可以…

Python 3 中,`asyncore`异步网络编程

在 Python 3 中&#xff0c;asyncore 是一个基于事件驱动的异步网络编程模块&#xff0c;它提供了一种简单的方式来创建异步的网络服务器和客户端。 asyncore 模块允许你以非阻塞的方式处理多个网络连接&#xff0c;而不需要为每个连接创建一个独立的线程。 asyncore 模块的主…

Gradle8之下载安装与环境变量配置及国内下资源设置

Gradle8之下载安装与环境变量配置及国内下资源设置 文章目录 Gradle8之下载安装与环境变量配置及国内下资源设置1. Gradle1. 官网2. 关于Gradle1. 构建任何内容2. 自动化一切3. 更快地交付 2. 下载与安装1. 下载2. 环境变量3.本地存储路径4. 查看Gradle版本 3. 配置国内下资源1…

Linux CentOS stream 9 安装docker

在计算机技术中,虑拟化是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等),予以抽象、转换后呈现出来并可供分区、组合为一个或多个电脑配置环境。 目前,大多数服务器的容量的利用率不足15%,这导致服务器数量激增以及增加了复杂性。服务…

【python中type函数的用法】

目录 描述 语法 使用示例 1. Python内置对象类型 2. 自定义对象类型 注意事项 1. 使用判断类型是否相等 2. 子类和父类属于不同的类型 描述 type函数是Python的内置函数&#xff0c;返回参数的类型。 语法 type(object)名称说明备注object任意类型的对象不可省略的参数 返回值&…

计算机视觉基础【OpenCV轻松入门】:获取图像的ROI

OpenCV的基础是处理图像&#xff0c;而图像的基础是矩阵。 因此&#xff0c;如何使用好矩阵是非常关键的。 下面我们通过一个具体的实例来展示如何通过Python和OpenCV对矩阵进行操作&#xff0c;从而更好地实现对图像的处理。 ROI&#xff08;Region of Interest&#xff09;是…

centos 7.6安装 Apache HTTP Server 2.4.58

centos 7.6安装 Apache HTTP Server 1、下载Apache HTTP Server 2.4.582、安装Apache HTTP Server 2.4.583、配置Apache HTTP Server 2.4.58 1、下载Apache HTTP Server 2.4.58 Apache HTTP Server is the Number One HTTP Server On The Internet. The Apache HTTP Server Pr…

大语言模型LLM中Transformer模型的调用过程与步骤

在LLM&#xff08;Language Model&#xff09;中&#xff0c;Transformer是一种用来处理自然语言任务的模型架构。下面是Transformer模型中的调用过程和步骤的简要介绍&#xff1a; 数据预处理&#xff1a;将原始文本转换为模型可以理解的数字形式。这通常包括分词、编码和填充…

【标准】2024年度成都市地方标准制修订立项要求重点、申报程序材料及时间

一、立项要求 (一)制定&#xff1a;为满足我市地方自然条件、风俗习惯、地理标志产品等特殊技术要求&#xff0c;或者在社会管理、公共服务等领域需要统一技术要求的&#xff0c;可以制定地方标准。 (二)修订&#xff1a;对已发布的地方标准&#xff0c;有以下情形&#xff0…

redis scan命令导致cpu飙升

一.背景 今天下午Redis的cpu占用突然异常升高&#xff0c;一度占用达到了90%&#xff0c;触发了钉钉告警&#xff0c;之后又回到正常水平&#xff0c;跟DBA沟通&#xff0c;他说主要是下面这个语句的问题 SCAN 0 MATCH fastUser:6136* COUNT 10000这个语句的执行时长很短&…

SpringBoot项目如何打包成docker镜像?

将Spring Boot项目打包成Docker镜像的过程可以分为以下几个步骤&#xff1a; 1. 创建Dockerfile 首先&#xff0c;你需要在Spring Boot项目的根目录下创建一个Dockerfile。这个文件包含了Docker镜像构建的所有指令。一个基本的Dockerfile可能看起来像这样&#xff1a; # 使用…

备份服务器数据的重要

备份服务器数据的重要 无论您是在运营一个网站、一个业务应用程序还是整个平台&#xff0c;无法定期备份服务器数据都可能将会再次困扰您。这不是一个是否的问题。这是个何时的问题。你们需要将灾难性故障的潜在损害降至最低。 灾难性故障期间最大限度地减少潜在损害的最佳方法…

运维的利器--监控--zabbix--第二步:建设--汉化补丁

文章目录 一、环境及需求说明二、安装配置步骤1、安装语言包2、查看安装的中文语言包3、登录zabbix控制台设置语言为简体中文4、刷新系统页面 一、环境及需求说明 环境说明&#xff1a; 操作系统 centos 7.9 zabbix-server版本 5.0 一般情况下&#xff0c;zabbix-server和WE…

基于JavaWeb开发的小区车辆登记系统计算机毕设[附源码]

基于JavaWeb开发的小区车辆登记系统计算机毕设[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统…

【洛谷题解】P8627 [蓝桥杯 2015 省 A] 饮料换购

题目链接&#xff1a;[蓝桥杯 2015 省 A] 饮料换购 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;换购 题意&#xff1a; 分析&#xff1a;一直换购直至瓶盖数<3为只 AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int main() {i…

手写table表格(一表头多数据)

手写table表格&#xff08;一表头多数据&#xff09; <template><div class"table-info"><div class"info-list"><div class"header-wrapper"><div class"columns-title" v-for"(i, k) in columns&q…