使用shell做http web接口,可以传递参数--废弃
此文章废弃,参考另一篇
参考网址:
https://me.jinchuang.org/archives/114.html
https://www.cnblogs.com/jinchuang/p/14200587.html
https://hub.docker.com/r/ipyker/fcgiwrap-nginx-shell
https://github.com/ipyker/fcgiwrap-nginx-shell/blob/main/Dockerfile
https://github.com/ipyker/fcgiwrap-nginx-shell/blob/main/docker-entrypoint.sh
镜像:
docker pull ipyker/fcgiwrap-nginx-shell
启动:
docker run -d --name nginx-fcgiwrap -p 80:80 ipyker/fcgiwrap-nginx-shell
使用:
curl http://127.0.0.1/v1/api/demo
curl "http://127.0.0.1/v1/api/demo?abc&efg"
Dockerfile
FROM nginx:1.17.9
RUN apt-get update && apt-get install -y spawn-fcgi fcgiwrap \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
EXPOSE 80
STOPSIGNAL SIGTERM
COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
docker-entrypoint.sh
#!/bin/bash
# ----------------------------------------------------------------
# Filename: docker-entrypoint.sh
# Revision: 1.1
# Date: 2021-08-26
# Author: pyker.zhang
# Email: pyker@qq.com
# website: www.ipyker.com
# Description: 使用shell写http web接口
# ----------------------------------------------------------------
# nginx支持fcgiwrap配置
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ ^/v1/api/(.*)$ {
gzip off;
default_type text/plain;
root /data/shell;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
# 创建shell脚本目录
mkdir -p /data/shell/v1/api
# 创建一个demo脚本
cat > /data/shell/v1/api/demo <<EOF
#!/bin/sh
echo "Content-Type:text/html;charset=utf-8"
echo ""
# 自动刷新
#echo '<script>window.setInterval(function(){
# window.location.reload();
#},1000);</script>'
#echo '<meta http-equiv="refresh" content="60">'
# html页面css样式
#echo '<style>
#body{color:#cecece;}
#.title{color: #FF9800;border-left: 4px solid;padding: 4px;}
#pre{font-size:14px;border-left: 4px solid #4CAF50;padding: 5px;}
#</style>'
for i in a b c; do
echo \$i
done
# Passing parameters
echo "\$QUERY_STRING" | awk -F '&' '{print \$1}'
echo "\$QUERY_STRING" | awk -F '&' '{print \$2}'
EOF
chmod +x /data/shell/v1/api/demo
/etc/init.d/fcgiwrap start
chmod 766 /var/run/fcgiwrap.socket
nginx -g "daemon off;"
进一步使用
本机创建挂载目录,然后启动容器的时候指定该路径进行挂载
mkdir -p /data/shell
docker run -d --name nginx-fcgiwrap -p 80:80 -v /data/shell:/data/shell/ ipyker/fcgiwrap-nginx-shell
此时在本机的/data/shell/v1/api
路径下写shell脚本,然后访问请求,就能执行该shell脚本了
本地挂载路径要跟容器中nginx配置文件中写的路径一致,否则会报403 错误
注意:在该目录下存放的shell脚本需要有x可执行权限,否则会报403错误。
使用shell做http web接口,可以传递参数--废弃的更多相关文章
- shell编程:向函数中传递参数
cal.sh sh cal.sh 20 + 10 实现这样传参的函数(shell不是一个严谨的编程语言,参数这种是不用定义的,函数中直接引用,shell执行中直接写) #!/bin/bash # ca ...
- 使用HttpRunner3+Allure+Jenkins实现Web接口自动化测试
陆续给不同项目做了Web接口自动化测试,在尝试不同方法的同时会有新的体会.最近用到了HttpRunner3,本文将记录使用HttpRunner3+Allure+Jenkins在项目中快速实现Web接口 ...
- 2. Shell 传递参数
1. 概要 我们可以在执行 Shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- #!/bin/bas ...
- postman(五):在不同接口之间传递数据
为了更灵活地构造请求以及处理响应数据,postman提供了Pre-request-Script和Tests,在这两个标签中可以编写js代码辅助测试.之前学习了在发送请求的Tests标签如何添加断言以及 ...
- shell脚本学习- 传递参数
跟着RUNOOB网站的教程学习的笔记 我们可以在执行shell脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n代表一个数字,1为执行脚本的第一参数,2为执行脚本的第二个参数,以此类推... 实 ...
- Shell教程 之传递参数
1.Shell传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字, 0 为执行的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数 ...
- Shell学习心得(二):传递参数、运算符
1.传递参数 可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 向脚本传递三个参数, ...
- Shell脚本编写3---Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 执行脚本,查看输出结果: 另外 ...
- Shell传递参数【转载】
Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...
随机推荐
- 用cmd命令进行磁盘清理(主要是系统盘)
作用:清理磁盘(主要是系统盘)中不需要的垃圾文件操作方法: 第一步:Windows键+R键 调出cmd命令窗口(窗口图如下:) 第二步:输入框中输入cmd命令,按下Enter键,进入如下图界面: 第三 ...
- .NET 使用自带 DI 批量注入服务(Service)和 后台服务(BackgroundService)
今天教大家如何在asp .net core 和 .net 控制台程序中 批量注入服务和 BackgroundService 后台服务 在默认的 .net 项目中如果我们注入一个服务或者后台服务,常规的 ...
- 互联网界的IT巨变:从DOS的编辑器,到如今的无代码开发
众所周知,Borland Pascal.Turbo Pascal.Turbo C等这类开发工具,都习惯自带IDE. 因此,我产生了一个大胆的想法. DOS时代下的Turbo C 如果说Anders这类 ...
- mysql 01: source命令
使用mysql的source命令,执行sql脚本 之所以使用docker同步挂载卷的方法,是因为在docker中运行的mysql未安装vim或gedit等基本编辑器 不方便在mysql容器里直接写sq ...
- python template生成模板文件
简介 在实际项目中,可能会出现需要批量生成特定格式或者特定内容的文件,因此,使用template文件生成便适用于在文件中大部分格式内容都是一致的,部分内容需要替换的情况. 模板文件 name: $NA ...
- React报错之Cannot find name
正文从这开始~ .tsx扩展名 为了在React TypeScript中解决Cannot find name报错,我们需要在使用JSX文件时使用.tsx扩展名,在你的tsconfig.json文件中把 ...
- Odoo14 自定义widget小部件
不多说先上源码. 1 odoo.define('my_company_users_widget', function (require) { 2 "use strict"; 3 4 ...
- 活动回顾|Apache DolphinScheduler x Pulsar 在线 Meetup
关于 Apache DolphinScheduler: " Apache DolphinScheduler(Incubating) 是一个分布式去中心化.易扩展的可视化工作流任务调度系统,致 ...
- Luogu2375 [NOI2014]动物园 (KMP)
写炸,上网,不同KMP形态. 无力,照该,一换写法就过. 横批:我是垃圾 求\(next\)时\(DP\)出\(num\),路径压缩防卡\(n^2\) AC #include <iostream ...
- Redis 18 Jedis
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Jedi ...