apache服务web页面执行shell脚本

news2025/1/13 13:09:55

首先安装apache服务

yum -y install httpd

如下介绍两种执行的方式

方式一、url直接传参的方式

#cat  /var/www/cgi-bin/shell
#!/bin/sh
printf "Content-Type: text/plain\n\n"
your_commands_here

传参的动作

http://172.16.61.119:8098/cgi-bin/shell?pwd

在浏览器里访问这个url就可以显示pwd路径

方式二、页面输入参数的方式

首先准备index.html的页面

#cat /var/www/html/index.html
<html>
<head>
<script>
function httpGet(url)
{
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", url, false); // false: wait respond
        xmlHttp.send(null);
        return xmlHttp.responseText;
}
function f()
{
        var url = "http://172.16.61.119:8098/cgi-bin/shell?wanyan%20"+ document.getElementById('in').value;
        document.getElementById('out').innerHTML = httpGet(url);
}
</script>
</head>
<body>
<span>专营店授权代码: </span>
<input id='in'></input>
<button onclick='f()'>提交查询</button>
<br/>
<pre id='out'></pre>
</body>
</html>

index.html页面注释:

  1. 专营店授权代码:  #这个是提示页面输入的内容,这个根据需求换成自己需要传的参数
  2. 提交查询 #这个就是sumbit的提交的动作
  3. wanyan: #这个就是引用方脚本(这个自定义),为了引用方便我放在了/usr/local/bin目录下
  4. 注意wanyan这个后边有一个空格"%20"
  5. var url = "http://172.16.61.119:8098/cgi-bin/shell?wanyan%20"+ document.getElementById('in').value; #这部分根据自己的实际情况换成自己的地址,也可以是127.0.0.1的地址,因为本身就是自己调用自己。

shell文件的内容(这里需要变更shell里的内容和直接传参的方式内容是不相同的)

#cat  /var/www/cgi-bin/shell
#!/bin/sh
alias urldecode='sed "s@+@ @g;s@%@\\\\x@g" | xargs -0 printf "%b"'
echo -e "Content-type: text/plain\n"
decoded_str=`echo $QUERY_STRING | urldecode`
echo -e "`$decoded_str` \n"

自定义脚本内容

#cat  /usr/local/bin/wanyan
#!/bin/bash
CODE=$1
curl -X POST "http://172.16.61.223:8716/bi/globe/api/queryCustomer" -H  "Request-Origion:SwaggerBootstrapUi" -H  "accept:application/json" -H  "token:" -H  "Content-Type:application/json" -d "$CODE" |jq|grep -E 'authCode|cloudShopName|shopAddress|yestaeCustomerManagerName|cloudShopAdminName|cloudShopAdminMobile|shopOwner|ownerMobile|shopLevelName'|sed --expression='s/"//g'  --expression='s/,//g' --expression='s/ //g'

wanyan这个脚本注释

  1. CODE #就是传的参数  也就是index.html页面里的专营店授权代码
  2. URL这个需要有没有的话自己写或者给开发索要
  3. 需要展示不同的内容修改wanyan这个脚本就行了(可以自定义)
  4. jq这个格式转换工具,需要yum提前安装一下

最终的页面展示的效果

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

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

相关文章

STM32使用寄存器开发底层驱动学习(USART+DMA)

目录学习资料下载任务USART的DMA功能发送数据DMA非中断模式接收USART数据。DMA中断模式接收USART数据总结学习资料下载 在本文学习中会用到如下的文档资料&#xff0c;没有的朋友先下载。 工程模板 Cortex M3权威指南&#xff08;中文&#xff09; &#xff1a;本文简称为《…

1024程序节|你知道老师上课随机点名是怎么实现的吗

个人主页&#xff1a;天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 目录 前言 随机点名 搭建主体框架 简述 执行代码 添加功能 块级元素随机输出姓名 Math.random() Math.round() 按钮控制开始/结束 onclick() clearInterval() 简述 完整代码 执行结果 片…

I/O复用--浅谈epoll

我们聊了聊select和poll知道&#xff1a; 它们都是采取轮询的方式查找是否有就绪描述符。都有数据结构从用户态拷贝到内核态&#xff0c;内核态拷贝到用户态这个过程。 为了针对许多大量连接&#xff0c;高并发的的场景下大量的资源消耗&#xff0c;效率低的问题&#xff0c;这…

网络安全实战:记一次比较完整的靶机渗透

0x01信息搜集 nmap -sC -sV -p- -A 10.10.10.123 -T4 -oA nmap_friendzone访问80端口的http服务只发现了一个域名。 0x02 DNS区域传输 因为我们前面扫描的时候发现了53端口是开着一个dns服务的&#xff0c;所以尝试使用friendzoneportal.red进行axfr&#xff0c;它的具体含…

《软件测试》实验2:嵌入式软件测试实验报告

文章目录实验目的温度控制器需求文档及测试要求环境搭建实验内容温度采集处理功能测试加热棒输出电压测试散热风扇温度传感器输入接口&#xff08;Senser_JK&#xff09;控制加热棒输出接口&#xff08;Heater_JK&#xff09;控制散热风扇输出接口&#xff08;Fan_JK&#xff0…

目标检测 YOLOv5 - 模型推理预处理 letterbox

目标检测 YOLOv5 - 模型推理预处理 letterbox flyfish 版本&#xff1a;YOLOv5 6.2 假如图片大小是1080 * 1920 &#xff08;height * width &#xff09; width 1920 height 1080 当模型输入是 640 * 640时 shapes (1080, 1920), (0.33, 0.33), (0.0, 140.0) 640/ 1920…

c++11 右值引用和移动语义

文章目录1. 左值引用和右值引用2. 左值引用与右值引用比较3. 右值引用使用场景和意义3.1左值引用的使用场景3.2左值引用的短板&#xff1a;3.3 移动构造3.4 移动赋值3.5 STL中的容器3.6 右值引用引用左值及其一些更深入的使用场景分析3.7 STL容器插入接口函数也增加了右值引用版…

Springboot 使用装饰器模式,快看,它装起来了

前言 小飞棍来咯&#xff01; 本篇文章跟小飞棍一毛钱关系没有。 本篇内容&#xff1a; 就是配合实战案例介绍我们平时 在springboot项目里面 怎么去用 装饰器模式、多层装饰怎么玩。 正文 首先先说下装饰器模式是什么 官方&#xff1a; 装饰器模式&#xff08;Decorator Pa…

Python3,5行代码,制作Gif动图,太简单了。

gif动图制作1、引言2、代码实战2.1 安装2.2 代码3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 你能不能帮我找一个动图&#xff0c; 小鱼&#xff1a;啥动图&#xff0c;你自己百度不就行了。 小屌丝&#xff1a;我这不是没找到吗&#xff0c; 不然我就自己来找了。 小…

Oracle数据库:net configureation assistant工具配置监听listener,配置本地网络访问服务器上的数据库

Oracle数据库&#xff1a;net configureation assistant工具配置监听listener&#xff0c;配置本地网络访问服务器上的数据库 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开…

图像类找工作面试题(二)——常见问题大总结

文章目录一、深度学习问题1、目标检测系列&#xff08;1&#xff09;介绍目标检测网络YOLO以及SSD系列原理。&#xff08;2&#xff09;YOLO对小目标检测效果不好的原因&#xff0c;怎么改善&#xff1f;&#xff08;3&#xff09;怎么防止过拟合&#xff08;4&#xff09;Drop…

Ubuntu18.04LTS环境下创建OpenCV4.x-Android库

1 背景 1.1 java.lang.UnsatisfiedLinkError: dlopen failed: library “libc_shared.so” not found libc_shared.so 之前默认集成在 opencv_java3.so&#xff0c;但是在OpenCV4.x以后&#xff0c;该动态库默认不集成在opencv_java4.so。 1.2 E/OpenCV/StaticHelper: OpenC…

NLP学习之:Bert 模型复现(1)任务分析 + 训练数据集构造

​ 文章目录代码资源原理学习任务代码讲解代码重写说明代码资源 Bert-pytorch 原理 学习任务 Bert 本质上是 Transformer 的 Encoder 端&#xff0c;Bert 在预训练时最基本的任务就是&#xff1a; 判断输入的两个句子是否真的相邻预测被 [MASK] 掉的单词 通过这两种任务的约…

面了个腾讯拿28k跳槽出来的,真正见识到了跳槽天花板

最近内卷严重&#xff0c;各种跳槽裁员&#xff0c;相信很多小伙伴也在准备金九银十的面试计划。 作为一个入职5年的老人家&#xff0c;目前工资比较乐观&#xff0c;但是我还是会选择跳槽&#xff0c;因为感觉在一个舒适圈待久了&#xff0c;人过得太过安逸&#xff0c;晋升涨…

ToDesk使用

现在的终端产品种类非常的多&#xff0c;常见的包括tablet, 手机&#xff0c;笔记本 ,ipod...等等&#xff0c;这些终端带屏产品连同台式机&#xff0c;智能电视等固定设备占据了我们的工作和生活中的大部分时间&#xff0c;不知道你发现没有&#xff0c;使这些不同种类的产品之…

[机器学习、Spark]Spark MLlib实现数据基本统计

&#x1f468;‍&#x1f393;&#x1f468;‍&#x1f393;博主&#xff1a;发量不足 &#x1f4d1;&#x1f4d1;本期更新内容&#xff1a;Spark MLlib基本统计 &#x1f4d1;&#x1f4d1;下篇文章预告&#xff1a;Spark MLlib的分类&#x1f525;&#x1f525; 简介&…

Java多线程【锁优化与死锁】

Java多线程【锁优化与死锁】&#x1f352;一.synchronized的优化&#x1f34e;1.1基本特点&#x1f34e;1.2加锁工作过程&#x1f34e;1.3优化操作&#x1f352;二.死锁&#x1f34e;2.1什么是死锁&#x1f34e;2.2 一对一死锁&#x1f34e;2.3 二对二死锁&#x1f34e;2.4 N对…

Web 1.0、Web 2.0 和 Web 3.0 之间的比较

&#x1f482; 个人网站:【海拥】【摸鱼小游戏】【神级源码资源网站】&#x1f91f; 风趣幽默的前端学习课程&#xff1a;&#x1f449;28个案例趣学前端&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的 P…

目前最先进的神经网络算法,神经网络算法发展

1、神经网络的发展趋势如何&#xff1f; 神经网络的云集成模式还不是很成熟&#xff0c;应该有发展潜力&#xff0c;但神经网络有自己的硬伤&#xff0c;不知道能够达到怎样的效果&#xff0c;所以决策支持系统中并不是很热门&#xff0c;但是神经网络无视过程的优点也是无可替…

HTML5新特性

H5新增 1) 新增选择器 document.querySelector、document.querySelectorAll doucment.querySelector(#sampel) // 选择id doucment.querySelector(.sampel) // 选择出现的第一个类 doucment.querySelectorAll(.sampel)[0] // 选择出现的第一个类2)拖拽释放(Drag and drop) AP…