linux - 二维数组的特定输出
问题描述
我正在运行 API 调用以获取集群中的节点状态。输出格式如下。我正在编写一个 shell 脚本来发布每个处于未就绪状态的节点的状态。但是我无法为此设计逻辑。
node1 ready
node2 disconnected
node3 ready
下面是我的脚本。请就更改提出建议。
#!/bin/bash
auth_token=$(curl -sk -d '{"username":"","password":""}' https://url/auth/login | jq -r .auth_token)
echo $auth_token
status=$(curl -X GET "https://<url>/nodes" -H "accept: application/json" -H "Authorization: Bearer $auth_token" | jq -r '.[] | .Description.Hostname + " " + .Status.State')
STATUS=($status)
alenght=${#STATUS[@]}
for (( i=0; i<${alenght}; i++));
do
# echo ${org[i]}
if [ ${org[i]} != "ready" ]
then
$dd_status = 3
$hostname = <hostname with status not ready>
curl -X POST https://api.datadoghq.com/api/v1/check_run?api_key=${DD_CLIENT_API_KEY} \
-H "Content-Type: application/json" \
-d @- << EOF
{
"check": "check_name",
"host_name": "$host_name",
"status": "$dd_status",
"tags": [
"environment:test"
]
}
EOF
else
$dd_status = 0
$hostname = <hostname with status ready >
curl -X POST https://api.datadoghq.com/api/v1/check_run?api_key=${DD_CLIENT_API_KEY} \
-H "Content-Type: application/json" \
-d @- << EOF
{
"check": "check_name",
"host_name": "$host_name",
"status": "$dd_status",
"tags": [
"environment:test"
]
}
EOF
fi
done
解决方案
试试这个逻辑
while read -r name status; do
case $status in
ready) good_code;;
*) fail_code;;
esac
done < <(code_to_generate_log)
推荐阅读
- android - 将图像的位图更改为 uri 时应用程序崩溃
- android - 如何根据 android 中的用户位置从 Firebase 数据库中检索数据?
- java - 如何从 Arraylist 中仅获取特定值
- javascript - 单击下拉按钮时,侧边栏下拉菜单未打开
- python - 如果值是“itertools.chain”对象,sqlite3 INSERT INTO 失败
- javascript - 如何从索引和键更新本地存储对象值
- mongodb - 适用于 MongoDB 的 IBM Cloud 和数据库
- php - 输入任何密码仍然可以登录
- c# - 使用实体框架附加参数值为 null 的实体
- php - PHP图形函数可以用来创建动画图形吗?