我使用curl得到这个答案:
curl -sX https://xx.com | jq -r '.res.out[].server // 空 | {主机:.host,描述:.description}'
{ "host": "server1",
"description": "server 1"
}
{ "host": "server2",
"description": "server 2"
}
{ "host": "server3",
"description": "server 3"
}
我使用第二次卷曲来获取 server 的状态(如果它正在运行)。在第二次卷曲中,我需要主机名来获取在第一次卷曲中获得的服务器状态,并且我还想添加服务器的描述。
所以,我想将主机列表和描述存储在地图上,以便在第二次卷曲时使用
for host in ${array_host[@]}; do
echo "HOST: $host";
echo "Description: $description"
curl -sX https://xx.com/servers/$host | jq -r '.specInfo.resul.out[].server.operationalStatus //empty';
done
我希望有这样的想法
HOST: Server1
Description: Server 1
RUNNING
HOST: Server2
Description: Server 2
RUNNING
HOST: Server3
Description: Server 3
NOT RUNNING
没有更多的样本数据,很难测试,但这样的东西应该可以满足您的需求:
curl … |
jq -r '.res.out[].server | .host, .description' hostdesc.json |
while read -r host; read -r desc; do
printf 'HOST: %s\nDescription: %s\n' "$host" "$desc"
curl … | jq …
done