首页 » 网站推广 » jq挪用php接口技巧_博文|用什么写API赶紧体验全新curljq的API

jq挪用php接口技巧_博文|用什么写API赶紧体验全新curljq的API

duote123 2024-12-07 0

扫一扫用手机浏览

文章目录 [+]

为了进行实验须要安装“jq”:

# On CentOS7/RHEL7:

jq挪用php接口技巧_博文|用什么写API赶紧体验全新curljq的API

yum install epel-release && yum install jq

jq挪用php接口技巧_博文|用什么写API赶紧体验全新curljq的API
(图片来自网络侵删)

# On CentOS8/RHEL8:

dnf install jq

# On Ubuntu/Debian:

apt install jq

# On any 64-bit Linux platform:

curl -skL "https://github.com/stedolan/jq/releases/download/jq1.5/jq-linux64" -o /usr/bin/jq && chmod +x /usr/bin/jq

获取一个授权令牌

为了使API调用运作,须要:

定义一个API地址。
这是一个URL,这个地址后端是个php文件被设计用来吸收要求用的。
获取一个授权令牌。

如果趋向于从前端做事器实行API调用,那么有可能涌现以下情形。

url=http://127.0.0.1/api_jsonrpc.php

# or:

url=http://127.0.0.1/zabbix/api_jsonrpc.php

为跳转到下一步,必须设置URL变量来测试是否已经配置:

echo $url

任何API调用都须要通过授权令牌才可利用。
利用以下命令,将一个授权令牌放入变量:

auth=$(curl -s -X POST -H 'Content-Type: application/json-rpc' \

-d '

{"jsonrpc":"2.0","method":"user.login","params":

{"user":"api","password":"zabbix"},

"id":1,"auth":null}

' $url | \

jq -r .result

)

注:把稳用户“api”的密码是“zabbix”,这是API调用的专用用户。

检讨是否有会话密钥,该当是32字符的十六进制字符串:

echo $auth

整体思路

1)访问文档页面并选择一个API方法,例如alert.get:

{

"jsonrpc": "2.0",

"method": "alert.get",

"params": {

"output": "extend",

"actionids": "3"

},

"auth": "038e1d7b1735c6a5436ee9eae095879e",

"id": 1

}

2)利用你最熟习的text编辑器,利用查找和更换功能转义所有的双引号。

{

\"jsonrpc\": \"2.0\",

\"method\": \"alert.get\",

\"params\": {

\"output\": \"extend\",

\"actionids\": \"3\"

},

\"auth\": \"038e1d7b1735c6a5436ee9eae095879e\",

\"id\": 1

}

注:千万别想动手动完成这个过程!

3)用我们的变量$auth更换会话密钥038e1d7b1735c6a5436ee9eae095879e

{

\"jsonrpc\": \"2.0\",

\"method\": \"alert.get\",

\"params\": {

\"output\": \"extend\",

\"actionids\": \"3\"

},

\"auth\": \"$auth\",

\"id\": 1

}

4)现在用curl封装API命令:

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"alert.get\",

\"params\": {

\"output\": \"extend\",

\"actionids\": \"3\"

},

\"auth\": \"$auth\",

\"id\": 1

}

" $url

通过实行前面的命令,该当已经在相应中输出了一个JSON内容。

为了使输出更俊秀,我们可以将其传送到jq .:

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"alert.get\",

\"params\": {

\"output\": \"extend\",

\"actionids\": \"3\"

},

\"auth\": \"$auth\",

\"id\": 1

}

" $url | jq .

将所有内容打包为一个文件

现在准备好利用代码片段了:

#!/bin/bash

# 1. set connection details

url=http://127.0.0.1/api_jsonrpc.php

user=api

password=zabbix

# 2. get authorization token

auth=$(curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"user.login\",

\"params\": {

\"user\": \"$user\",

\"password\": \"$password\"

},

\"id\": 1,

\"auth\": null

}

" $url | \

jq -r '.result'

)

# 3. show triggers in problem state

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"trigger.get\",

\"params\": {

\"output\": \"extend\",

\"selectHosts\": \"extend\",

\"filter\": {

\"value\": 1

},

\"sortfield\": \"priority\",

\"sortorder\": \"DESC\"

},

\"auth\": \"$auth\",

\"id\": 1

}

" $url | \

jq -r '.result'

# 4. logout user

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"user.logout\",

\"params\": [],

\"id\": 1,

\"auth\": \"$auth\"

}

" $url

便利性

我们可以利用https://jsonpathfinder.com/来辨别提取元素的路径。

例如,利用API调用列出所有利用的Zabbix proxy:

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"proxy.get\",

\"params\": {

\"output\": [\"host\"]

},

\"auth\": \"$auth\",

\"id\": 1

}

" $url

它可能输出以下内容:

{"jsonrpc":"2.0","result":[{"host":"broceni","proxyid":"10387"},{"host":"mysql8mon","proxyid":"12066"},{"host":"riga","proxyid":"12585"}],"id":1}

```

在JSONPathFinder中,通过在右侧面板上单击鼠标,我们可以定位须要提取的样本元素:

它建议路径“x.result[1].host”。
这意味着为提取所有元素,可以移除数字并如下所示利用“.result[].host”:

curl -s -X POST \

-H 'Content-Type: application/json-rpc' \

-d " \

{

\"jsonrpc\": \"2.0\",

\"method\": \"proxy.get\",

\"params\": {

\"output\": [\"host\"]

},

\"auth\": \"$auth\",

\"id\": 1

}

" $url | jq -r '.result[].host'

现在它仅输出proxy标题:

broceni

mysql8mon

riga

标签:

相关文章

今日头条算法引领个化信息时代的变革

信息爆炸时代已经到来。每个人都是信息的接收者和传播者。面对海量的信息,人们往往感到无所适从。为了解决这一问题,各大互联网公司纷纷推...

网站推广 2025-01-31 阅读1 评论0

今日头条算法信息推荐的秘密武器

信息爆炸的时代已经来临。人们每天都会接触到大量的信息,而如何从这些信息中筛选出有价值的内容,成为了亟待解决的问题。今日头条算法作为...

网站推广 2025-01-31 阅读1 评论0

今日头条算法精准推荐背后的技术奥秘

信息爆炸的时代已经来临。我们每天都要面对海量的信息,如何从这些信息中筛选出自己感兴趣的内容,成为了每个人都关心的问题。今日头条作为...

网站推广 2025-01-31 阅读1 评论0