IBM lsf lsload结果转json格式

集群管理 2 258 团子精英 收藏

有时候我们在对lsf的节点负载进行分析的时候,需要进行一些格式的裁剪和切换。

目测当前最友好的格式是json

下面是将lsload的结果转换成json的一个脚本,请勿照搬!


#!/bin/bash  
  
# 获取lsload结果  
load_data=$(lsload | awk '{print $1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11}')  
  
# 转换为JSON格式  
json_data='['  
for line in $load_data; do  
    # 提取每个字段  
    host=$(echo $line | awk '{print $1}')  
    status=$(echo $line | awk '{print $2}')  
    r15s=$(echo $line | awk '{print $3}')  
    r1m=$(echo $line | awk '{print $4}')  
    r15m=$(echo $line | awk '{print $5}')  
    ut=$(echo $line | awk '{print $6}')  
    pg=$(echo $line | awk '{print $7}')  
    ls=$(echo $line | awk '{print $8}')  
    it=$(echo $line | awk '{print $9}')  
    tmp=$(echo $line | awk '{print $10}')  
    swp=$(echo $line | awk '{print $11}')  
    mem=$(echo $line | awk '{print $12}')  
      
    # 添加到JSON数据中  
    json_data+='{"host":"'$host'", "status":"'$status'", "r15s":"'$r15s'", "r1m":"'$r1m'", "r15m":"'$r15m'", "ut":"'$ut'", "pg":"'$pg'", "ls":"'$ls'", "it":"'$it'", "tmp":"'$tmp'", "swp":"'$swp'", "mem":"'$mem'"},'  
done  
  
# 去除最后一个逗号并添加闭合方括号  
json_data=${json_data%?}']'  
  
# 输出JSON数据  
echo $json_data


如果要用一行命令来处理,请使用如下,注意,需要是bash脚本环境

echo "[" $(lsload | awk 'NR>1 {printf "%s{\"hostname\":\"%s\",\"status\":\"%s\",\"r15s\":\"%s\",\"r1m\":\"%s\",\"r15m\":\"%s\",\"ut\":\"%s\",\"pg\":\"%s\",\"ls\":\"%s\",\"it\":\"%s\",\"tmp\":\"%s\",\"swp\":\"%s\",\"mem\":\"%s\"}", (NR>2 ? "," : ""), $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12}') "]"


csh下由于不可以是用$(),则可以使用如下命令

echo "[" `lsload | awk 'NR>1 {printf "%s{\"hostname\":\"%s\",\"status\":\"%s\",\"r15s\":\"%s\",\"r1m\":\"%s\",\"r15m\":\"%s\",\"ut\":\"%s\",\"pg\":\"%s\",\"ls\":\"%s\",\"it\":\"%s\",\"tmp\":\"%s\",\"swp\":\"%s\",\"mem\":\"%s\"}", (NR>2 ? "," : ""), $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12}'` "]"


相关推荐:

网友留言:

  1. fukua
    回复
    脚本中需要添加,IFS=$'\n' # 设置IFS为换行符
    1. 团子精英
      回复
      json其实并不需要换行。。当然,换行也是可以滴
您需要 登录账户 后才能发表评论

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码