Pyjojo 把 bash 脚本变成 API

发布于 2021-05-09 19:21:38 字数 2338 浏览 1180 评论 0

项目地址:https://github.com/atarola/pyjojo

准备工作

使用 Ubunt14 TLS 做的验证,它已经默认装了 python2.7.6 和 ython3.4.0。 安装 pip,是 python 应用的部署工具:

apt-get install python-pip

如果是 centos,则先安装 yum install epel-release 再执行 yum install python-pip 然后用 pip 装 pyjojo:

pip install pyjojo

安装后测试一下:

pyjojo --help

会显示很多命令行说明,表明安装成功。 运行 pyjojo:

pyjojo -d --dir /srv/pyjojo

pyjojo 默认监听 3000 端口,可以用浏览器访问 localhost:3000 测试一下。 我要用 apache htpasswd 工具来生成密码文件,要先安装它。执行:

apt-get install apache2-utils

安装成功后执行一个命令测试一下:htpasswd --help 再生成一个密码测试一下:htpasswd -nb wbwang 123。系统会显示 wbwang:$apr1$GfIUY8Yf$OuMYbvtJ.gDasIn3wvGvn1 这就是生成的密码文件。这个文件可以直接被 apache httpd 或 nginx 解析,实现 http 基础认证。用户名 wbwang,密码是 123。

正式验证 pyjojo

cd /srv/pyjojo
vi htpasswd.sh

输入以下内容:

#!/bin/bash

# -- jojo --
# description: httpasswd密码文件生成
# param: user - 用户id
# param: pwd - 密码
# filtered_param: pwd - 不要把密码输出到日志
# -- jojo --

echo "jojo_return_value user=$USER"
pwdfile=$(htpasswd -nb $USER $PWD);
echo "jojo_return_value htpasswd=$pwdfile"
exit 0

第一行是是说明这是一个 bash 脚本,需要 /bin 目录下 bash 应用去解释这个脚本文件。被 -- jojo --- 包裹的区域是元数据定义区。根据定义的元数据,这个服务接受两个参数,用户 id 和密码。

刚编辑生成的 htpasswd.sh 脚本是不可执行的,需要用 linux 命令赋予它执行的权限:

chmod +x htpasswd.sh

测试一下这个脚本文件。注意这个脚本的文件名 htpasswd.sh 将自动变成 URL 的一部分。

curl -XPOST http://localhost:3000/scripts/htpasswd
-H "Content-Type: application/json"
-d '{"user": "wbwang", "pwd": "123"}'

响应如下:

{"retcode": 0, "return_values": 
  {"htpasswd": "wbwang:$apr1$Q3sWEa2V$6de019fnluH.v9N0kV50M0", "user": "wbwang"}, 
  "stderr": [], 
  "stdout": ["jojo_return_value user=wbwang",
"jojo_return_value htpasswd=wbwang:$apr1$Q3sWEa2V$6de019fnluH.v9N0kV50M0"]}

注意,即使用户名口令不变,每次调用 htpasswd 生成的密码文件也会不同。因为有个随机数当加密盐,但并不影响密码的解析。

至此,htpasswd 工具就被包装成了一个 API,API 地址是:localhost:3000/scripts/htpasswd。这个 API 的输入输出都是 json 字符串。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84959 人气
更多

推荐作者

一念一轮回

文章 0 评论 0

脱离于你

文章 0 评论 0

春夜浅

文章 0 评论 0

吃兔兔

文章 0 评论 0

晨曦

文章 0 评论 0

kevin123

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文