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

如何通过curl+jq获取服务器列表并关联查询运行状态

实现服务器状态批量查询并关联描述信息

1. 获取服务器主机名与描述信息

首先通过以下curl结合jq命令获取服务器列表的主机名和描述:

curl -sX GET https://xx.com | jq -r '.res.out[].server // empty | {host: .host, description: .description}'

返回的JSON结果如下:

{ "host": "server1",
  "description": "server 1"
}
{ "host": "server2",
  "description": "server 2"
}
{ "host": "server3",
  "description": "server 3"
}

2. 构建映射结构并批量查询状态

在Bash中可以使用关联数组存储主机名与描述的映射关系,再循环遍历数组查询每个服务器的运行状态。修改后的脚本如下:

#!/bin/bash

# 初始化关联数组
declare -A server_desc_map

# 从接口获取数据并填充关联数组
while IFS=$'\t' read -r host desc; do
    server_desc_map["$host"]="$desc"
done < <(curl -sX GET https://xx.com | jq -r '.res.out[].server // empty | "\(.host)\t\(.description)"')

# 循环遍历数组,查询每个服务器状态
for host in "${!server_desc_map[@]}"; do
    desc="${server_desc_map[$host]}"
    # 首字母大写处理,匹配期望输出格式
    echo "HOST: $(tr '[:lower:]' '[:upper:]' <<< ${host:0:1})${host:1}"
    echo "Description: $(tr '[:lower:]' '[:upper:]' <<< ${desc:0:1})${desc:1}"
    status=$(curl -sX GET https://xx.com/servers/$host | jq -r '.specInfo.resul.out[].server.operationalStatus // empty')
    echo "$status"
done

脚本说明:

  • 用jq将每个服务器的host和description以制表符分隔输出,方便read命令读取解析
  • 关联数组server_desc_map实现主机名到描述的一一映射
  • 循环遍历数组时,同步取出对应描述并调用状态查询接口
  • 通过tr命令实现首字母大写,匹配期望的输出格式

3. 最终输出效果

执行脚本后,会得到如下格式的输出:

HOST: Server1
Description: Server 1
RUNNING
HOST: Server2
Description: Server 2
RUNNING
HOST: Server3
Description: Server 3
NOT RUNNING

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:22:19