You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中解析JSON并将Hook IP存入独立变量?

嘿,我来帮你搞定这个问题!既然你已经能从GitHub API的Meta响应里提取出hooks数组,那把每个IP分到单独变量里其实很简单,我给你用几种常用语言举例子:

Python 实现

假设你已经把API返回的JSON数据解析成了Python字典(比如用内置的json模块),直接通过数组索引就能轻松赋值:

import json

# 这里模拟你从API获取并解析后的字典数据
github_meta = {
    "verifiable_password_authentication": True,
    "github_services_sha": "f9e3a6b98d76d9964a6613d581164039b8d54d89",
    "hooks": [ "192.30.252.0/22", "185.199.108.0/22", "140.82.112.0/20" ],
    # 其他字段省略...
}

# 直接通过索引将每个IP赋值给独立变量
hook_ip1 = github_meta["hooks"][0]
hook_ip2 = github_meta["hooks"][1]
hook_ip3 = github_meta["hooks"][2]

# 可以打印验证结果
print(hook_ip1)  # 输出: 192.30.252.0/22

Bash 实现

如果是用Shell脚本处理,搭配curl和jq工具的话,有两种常见方式:

方式1:先提取整个数组再赋值

# 从GitHub API获取数据并解析出hooks数组的所有元素
hooks_array=($(curl -s https://api.github.com/meta | jq -r '.hooks[]'))

# 将数组元素分别赋值给独立变量
hook_ip1=${hooks_array[0]}
hook_ip2=${hooks_array[1]}
hook_ip3=${hooks_array[2]}

# 验证变量值
echo $hook_ip1  # 输出: 192.30.252.0/22

方式2:直接单独提取每个IP

如果你已经把完整的JSON数据存在了某个变量里(比如json_data),可以直接用jq定位到每个元素:

# 假设json_data是存储了完整响应的变量
hook_ip1=$(echo "$json_data" | jq -r '.hooks[0]')
hook_ip2=$(echo "$json_data" | jq -r '.hooks[1]')
hook_ip3=$(echo "$json_data" | jq -r '.hooks[2]')

小提示:如果以后GitHub的hooks IP数量有变化,你也可以用循环来批量处理,但针对你现在明确的3个IP,直接用索引赋值是最直接高效的方案。

内容的提问来源于stack exchange,提问作者Nexus490

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:41:37